DateField:selectedDate将小时显示为24:00:00

时间:2012-12-06 16:29:43

标签: actionscript-3 flex

使用DateField组件,selectedDate.getHours返回24:00:00。我希望它返回00:00:00。

有一种简单的方法吗?

谢谢!

更新:

首先,我在Model中设置了一个等于DateField组件的selectedDate的变量:

model.generalInfo.endDate = endDate_df.selectedDate;

然后我根据该值设置另一个变量,并将其追踪出来:

param.todate = df.format( model.generalInfo.endDate.toString() );

这是我看到时间等于24:00:00

的地方

2 个答案:

答案 0 :(得分:2)

你可以试试像

这样的东西
  selectedDate.time = selectedDate.time - 24 * 60 * 60 * 60 * 1000

作为Date.time表示自1970年以来的毫秒数或其他......你减去24小时..

如果它不适合您,您可以创建一个新函数或getter来转换它,或者您可以创建一个新的mxml模块,DateField作为超类,您可以覆盖getHours方法。大量选择这样做..

答案 1 :(得分:1)

您似乎正在使用Flex DateFormatter格式化Date对象。看看这个类的文档,它有一个formatString属性,可以用来控制如何输出日期(或者在这种情况下是时间)。

如果您为DateFormatter提供包含“H”的格式字符串,则会使用数字范围1-24以24小时格式输出小时。如果格式字符串包含“J”,它将使用范围0-23以24小时格式输出小时。

要获得所需的输出,请在格式字符串中使用“JJ”,以及任何其他项目。例如,输出小时,分钟,秒:

var someDate:Date = new Date(2012, 11, 5);
var df:DateFormatter = new DateFormatter();
df.formatString = "JJ:NN:SS";
var formatted:String = df.format(someDate); // 00:00:00

另外,正如@Flextras所提到的,您可以使用Flash本地化API,它具有将日期/时间字符串转换为其语言环境所使用的值的额外好处。这些是DateTimeFormatter类:

这些类将日期格式化为用户的语言环境(或您指定的语言环境),并以Date的方式格式化DateFormatter个对象。