日期到字符串< - >字符串到日期

Tim*_*Tim 7 apache-flex date

我得到了数据库的日期,我需要将其显示为字符串.所以在Flex中我这样做:

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();
}
Run Code Online (Sandbox Code Playgroud)

但我得到了例如结果:

13.7.2010 0:0:15

如何用填充0填充日,月,小时,分钟,秒?

而且,我从String回到Date:

DateField.stringToDate(myTextInput.text, "DD.MM.YYYY HH:MM:SS");
Run Code Online (Sandbox Code Playgroud)

它是否正确?我希望有一个Date,我将通过BlazeDS传输到J2EE后端,但我只在数据库中看到一个空值.出了点问题......

最好的祝福.

Rya*_*nch 19

你见过DateFormatter类吗?

例:

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);
}
Run Code Online (Sandbox Code Playgroud)

看起来有人在编写Flex 3.2的那天睡着了,因为它DateFormatter::parseDateString是一个受保护的功能.看起来他们修正了3.5.

  • 方法stringToDate不起作用,因为它是受保护的方法.我正在使用Flex 4. (2认同)

Shu*_*hua 8

我添加这个是因为stringToDate函数在上面的答案中不起作用,简单的包装器不允许您指定输入字符串格式.实际上不再需要包装器,因为函数现在是静态的,但是你仍然有同样的问题.我建议使用DateField类中的以下静态函数.

//myObject.CreatedDate = "10022008"

var d:Date = DateField.stringToDate(myObject.CreatedDate, "MMDDYYYY");
Run Code Online (Sandbox Code Playgroud)


Vas*_*syl 5

您可以将String转换为Date with DateFormatter::parseDateString,但此方法受到保护(?).要访问方法,DateFormatter::parseDateString只需编写一个简单的包装器:

import mx.formatters.DateFormatter;

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

    public function parseDate(str:String):Date
    {
        return parseDateString(str);
    }       
}
Run Code Online (Sandbox Code Playgroud)