所以我有一个非常简单但又烦人的问题。我正在创建一个日期对象并调用getHours()方法,返回似乎总是为零。也许我做错了什么?
var d:Date = new Date(1382166000000); // 10 / 19 / 13 @ 2:00:00am EST
trace(d.getTime() + " : " + d.getHours());
//output: 1382166000000 : 0
有什么想法吗?除非我有一点困惑,否则不应该让我们回来2?
答案 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和本地时区的时间。而已。如果您想在任何其他时区进行时间,则需要手动设置格式,如上所述。