Problema con la fecha en Flex

48 views
Skip to first unread message

rominoski

unread,
May 27, 2009, 2:59:14 PM5/27/09
to Flex AIR Venezuela
Tengo un As que serializa el mensaje para flex, y convierte la fecha
con el metodo "getTime()" (java) de la clase Date, este proceso
retorna la fecha representada en milisegundo. Para la fecha
"01/01/0001", el metodo retorna el valor "-62135755200000", este valor
en flex no es interpretado correctamente y devuelte una fecha
invalida.
Ejemplo en Flex:

var date : Date = new Date(-62135755200000);
Alert.show(date.toDateString(),"");

al realizar esta prueba, se muestra la fecha "30/12/0" en flex en vez
de la fecha "01/01/0001" que deberia mostrar.

Rafael Ochoa: Flex Air Venezuela

unread,
May 27, 2009, 3:05:35 PM5/27/09
to Flex AIR Venezuela
prueba usando la parte de fechas de
as3corelib para darle formato a lo que traes de java
http://code.google.com/p/as3corelib/

te dejo un tutorial
http://ntt.cc/2008/09/04/as3corelib-tutorial-how-to-use-dateutil-class-in-flex.html


Gracias por tu pregunta...

rominoski

unread,
May 27, 2009, 3:36:48 PM5/27/09
to Flex AIR Venezuela
Rafael en el tutorial no entiendo muy bien, pero si te fijas la fecha
que esta marcada en los combo de fecha difieren en 1 dia menos de las
fechas que son mostradas al lado...

Eje. En el 1er combo de fecha esta seleccionada la fecha dice: date1:
08/31/2008 y al lado esta como Sat Aug 30 16:00:00 2008 UTC....


:S


On 27 mayo, 15:05, "Rafael Ochoa: Flex Air Venezuela"
<rafaeloch...@gmail.com> wrote:
> prueba usando la parte de fechas de
> as3corelib para darle formato a lo que traes de javahttp://code.google.com/p/as3corelib/
>
> te dejo un tutorialhttp://ntt.cc/2008/09/04/as3corelib-tutorial-how-to-use-dateutil-clas...

Juan Manrique

unread,
Jun 7, 2009, 3:01:24 PM6/7/09
to Flex AIR Venezuela
Hola rominoski.

Disculpa la tardanza para responder tu pregunta. Tuve que investigar
unas cuantas cosas sobre fechas en Flex para poder encontrar la
solución a tu problema pero finalmente encontre una que, tal como
esperaba, es muy simple. Al parecer cuando creas un objeto Date usando
su constructor, en cualquiera de sus varias formas de iniciación, es
imposible asignarle inicialmente la fecha 01/01/0001. En las pruebas
que hice, la menor fecha que pude asignarle inicialmente usando el
constructor de Date fue 01/01/0100. Asumiendo que lo anterior es
cierto, la forma mas simple que encontre de llegar a la fecha que
deseas es crear un objeto Date con el primer dia y el primer mes pero
con cualquier año y posteriormente cambiar el año al año 0001. Una
manera de hacerlo seria la siguiente:

// se crea el objeto date con cualquier fecha
var fecha : Date = new Date(100,0,1,1,0,0,0); //año 100, mes 0 que es
enero, dia 1, hora 1, min 0, segs 0, ms 0.
trace(fecha); //Fri Jan 1 100 01:00:00 AM
// ahora se cambia el año al que se desea (año 0001).
fecha.setFullYear(1);
trace(fecha); //Mon Jan 1 1 01:00:00 AM

Esta es la opción más formal que pude encontrar. Algunas otras cosas
interesantes que debes saber sobre fecha son:
1) el número que representa el mes de de enero es 0 y no 1.
2) cualquier fecha menor del año 100 sera iniciada por Flex sumandole
1900. Ej: si inicias con el año 89, el resultado sera el año 1989.
3) en general, el objeto Date tiene un comportamiento identico a su
equivalente en lenguaje Java.

Espero que lo anterior te ayude a resolver tu problema y en caso
contrario, aqui seguimos.

Saludos. Juan Carlos Manrique.
Reply all
Reply to author
Forward
0 new messages