我得到了数据库的日期,我需要将其显示为字符串。 所以在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后端,但我只在数据库中看到一个空值。所以出了点问题......
最诚挚的问候。
答案 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);
}
}