2

这是对我之前的问题的跟进。在我获取当前时间的解决方案中,我需要添加/减去偏移量:

var createDate:Date = new Date();
var offset:Number = createDate.getTimezoneOffset() * 60 * 1000; 
createDate.time = parseInt("1343174921") * 1000 - offset; // subtracting offset

为了得到正确的时间,我不得不减去偏移量(纯猜测)。我怎么知道减去或增加偏移量?getTimezoneOffset的文档说:

此值是您需要添加到计算机本地时间以等于 UTC 的分钟数。如果您的计算机时间设置为晚于 UTC,则该值将为负数。

有没有一种简单的方法可以确定计算机的时间是否设置得晚于/早于 UTC,以便我知道是否需要添加或减去偏移量?

更新我检查了数据库,我正在存储一个创建的条目7/25/2012 at 8pm1343282417我正在使用UTC_TIMESTAMP()来存储日期)。当我将它插入 Unix 时间戳转换器时,我得到Thu, 26 Jul 2012 06:00:17 GMT. 所以我很困惑为什么 MySql 的 UTC_TIMESTAMP (假设返回当前的 UTC 日期和时间)给了我一个不同的日期。我在本地工作,MySQL db、php 和 Flash 代码都在单台机器上。

4

1 回答 1

0

你的问题几乎就是你的答案,不是吗?

此值是您需要添加到计算机本地时间以等于 UTC 的分钟数。如果您的计算机时间设置为晚于 UTC,则该值将为负数。

这意味着您需要始终添加getTimezoneOffset到本地日期以获取 UTC 日期

所以,

var now:Date=new Date();

var utcOffset=now.getTimezoneOffset() * 60 * 1000;

var utcNow:Date=new Date(now.valueOf() + utcOffset);

您现在拥有 UTC 时间utcNow

注意: utcNow只是 utc 时间的错误表示(它是用户时区中的当前 UTC 时间。也就是说,atoString()将附加用户的原始时区。要获取 UNIX 时间戳,请使用utcNow.valueOf()

有内置的 API 函数getUTCDate, getUTCFullYear, getUTCHours, getUTCMinutes, getUTCMilliseconds, getUTCMonthgetUTCSeconds您可以在原始 ( now) Date 对象上调用这些函数来仅获取这些值。

于 2012-07-25T17:18:10.837 回答