As3日期对象无法正确返回小时数

时间:2013-10-18 22:38:37

标签: actionscript-3 date

所以我有一个非常简单但又烦人的问题。我正在创建一个日期对象并调用getHours()方法,返回似乎总是为零。也许我做错了什么?

var d:Date = new Date(1382166000000); // 10 / 19 / 13 @ 2:00:00am EST
trace(d.getTime() + " : " + d.getHours());

//output: 1382166000000 : 0

有什么想法吗?除非我有一点困惑,否则不应该让我们回来2?

1 个答案:

答案 0 :(得分:2)

Date无法按照您的想法运作。它可以以两种格式之一存在:本地时间或UTC。

getHours()方法返回本地时间,或根据计算机内部时区偏移量格式化的UTC时间。您通过的时间实际上是UTC时间的上午7点。所以按照这个逻辑,你(和我)是PST(或UTC-7)。如果您运行d.timezoneOffset,它应该返回420,这是7小时的分钟。

现在,大多数时候你从不想要使用除UTC以外的任何东西(UTC是常量,特别是在计算机中)。所以忘记getHours()方法并改为getUTCHours()

trace(d.getTime() + " : " + d.getUTCHours ()); // output 1382166000000 : 7

这样就可以给你UTC时间。接下来,您必须确定要将其格式化的时区。 EST是UTC-5,因此您希望从UTC时间中减去5。

trace(d.getTime() + " : " + ( d.getUTCHours () - 5 )); // output 1382166000000 : 2

这确切地说明了你的期望。

重申一下:AS3的Date允许设置时区。您只能访问UTC和本地时区的时间。而已。如果您想在任何其他时区进行时间,则需要手动设置格式,如上所述。