2010-06-28 17 views
7

Ich bekomme ein Datum meiner Datenbank und ich muss es als String zeigen. So in Flex Ich tue dies:Datum zu String <-> String zum Datum

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(); 
} 

Aber ich habe zum Beispiel das Ergebnis:

13.7.2010 0: 0: 15

Wie kann ich den Tag, Monat, Stunden füllen, Minuten, Sekunden mit gepolsterten 0?

Und, gehe ich zurück von String to Date mit:

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

Ist das richtig? Ich möchte ein Date haben, das ich über BlazeDS an ein J2EE Backend übertrage, aber ich sehe nur in der Datenbank dann einen Nullwert. So etwas läuft schief ...

Mit freundlichen Grüßen.

Antwort

19

Haben Sie die Klasse DateFormatter gesehen?

Beispiel:

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); 
} 

Es sieht aus wie jemand schläft war der Tag der schrieb Flex 3.2, weil DateFormatter::parseDateString eine geschützte Funktion ist. Es sieht so aus, als hätten sie das um 3.5 korrigiert.

+2

Die Methode stringToDate funktioniert nicht, da es sich um eine geschützte Methode handelt. Ich verwende Flex 4. – Tim

+0

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

+0

'parseDateString()' akzeptiert oder respektiert keine Formatzeichenfolge, daher könnte es zufällig sein, wenn die Zeichenfolge wird korrekt konvertiert. – splash

5

Sie können Zeichenfolge in Datum mit DateFormatter::parseDateString konvertieren, aber diese Methode ist geschützt (?). Um Methode zugreifen DateFormatter::parseDateString schreiben Sie einfach ein einfaches Wrapper:

import mx.formatters.DateFormatter; 

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

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

Exzellenter Partner, um diese geschützte Methode zu haben. :) –

7

Ich füge dies, weil die stringToDate Funktion nicht auf Antwort funktioniert oben und die einfache Wrapper erlaubt Ihnen nicht, den Eingabestring-Format angeben. Der Wrapper wird eigentlich nicht mehr benötigt, da die Funktion jetzt statisch ist, aber Sie haben immer noch das gleiche Problem. Ich würde stattdessen empfehlen, die folgende statische Funktion aus der DateField-Klasse zu verwenden.

//myObject.CreatedDate = "10022008" 

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