2010-06-28 26 views
7

Obtengo una Fecha de mi base de datos y necesito mostrarla como una Cadena. Así en Flex hago esto:Fecha para Cadena <-> Cadena Fecha

public static function dateToString(cDate:Date):String { 
     return cDate.date.toString()+"."+ 
      cDate.month.toString()+"."+ 
      cDate.fullYear.toString()+" "+ 
      cDate.hours.toString()+":"+ 
      cDate.minutes.toString()+":"+ 
      cDate.seconds.toString(); 
} 

pero me da, por ejemplo, el resultado:

13.7.2010 0: 0: 15

¿Cómo puedo llenar el día, mes, hora, minutos, segundos con 0 acolchado?

Y, vuelvo de String a la fecha con:

DateField.stringToDate(myTextInput.text, "DD.MM.YYYY HH:MM:SS"); 

¿Es esto correcto? Quiero tener una Fecha que transferiré a través de BlazeDS a un Backend J2EE, pero solo veo en la base de datos un valor nulo. Entonces, algo va mal ...

Atentamente.

Respuesta

19

¿Has visto la clase DateFormatter?

Ejemplo:

import mx.formatters.DateFormatter; 

private var dateFormatter:DateFormatter; 

private function init():void 
{ 
    dateFormatter = new DateFormatter(); 
    dateFormatter.formatString = 'DD.MM.YYYY HH:NN:SS' 
} 

public function dateToString(d:Date):String 
{ 
    return dateFormatter.format(d); 
} 

public function stringToDate(s:String):Date 
{ 
    return dateFormatter.parseDateString(s); 
} 

Parece como si alguien estaba dormido el día que el Flex 3.2 escribió, porque DateFormatter::parseDateString es una función protegida. Parece que arreglaron eso por 3.5.

+2

El método stringToDate no funciona, porque es un método protegido. Estoy usando Flex 4. – Tim

+0

在 Flash CS4 中 会 到, 提示 到不到 定义 mx.formatters.DateFormatter –

+0

'parseDateString()' no acepta ni respeta una cadena de formato, por lo que podría ser por casualidad si la cadena se convierte correctamente – splash

5

Puede convertir String to Date con DateFormatter::parseDateString, pero este método está protegido (?). Para acceder método DateFormatter::parseDateString acaba de escribir un envoltorio sencillo:

import mx.formatters.DateFormatter; 

public class DateFormatterWrapper extends DateFormatter 
{ 
    public function DateFormatterWrapper() 
    { 
     super(); 
    } 

    public function parseDate(str:String):Date 
    { 
     return parseDateString(str); 
    }  
} 
+0

Excelente compañero, para tener este método protegido. :) –

7

estoy añadiendo esto porque la función stringToDate no funciona en respuesta anterior y el simple envoltorio no le permite especificar el formato de cadena de entrada. El contenedor ya no es necesario, ya que la función ahora es estática, pero todavía tienes el mismo problema. En cambio, recomendaría usar la siguiente función estática de la clase DateField.

//myObject.CreatedDate = "10022008" 

var d:Date = DateField.stringToDate(myObject.CreatedDate, "MMDDYYYY");