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

时间:2010-06-28 20:17:59

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

但我得到的结果是:

13.7.2010 0:0:15

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

然后,我从String回到Date:

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

这是对的吗?我希望有一个Date,我将通过BlazeDS传输到J2EE后端,但我只在数据库中看到一个空值。所以出了点问题......

最诚挚的问候。

3 个答案:

答案 0 :(得分: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);
}

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

答案 1 :(得分:8)

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

//myObject.CreatedDate = "10022008"

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

答案 2 :(得分:5)

您可以使用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);
    }       
}