这是对previous question的跟进。在我获得当前时间的解决方案中,我需要添加/减去偏移量:
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 8pm
上创建的条目存储为1343282417
(我正在使用UTC_TIMESTAMP()商店日期)。当我将其插入Unix时间戳转换器时,我得到Thu, 26 Jul 2012 06:00:17 GMT
。所以我很困惑,为什么MySql的UTC_TIMESTAMP(假设返回当前的UTC日期和时间)给我一个不同的日期。我在本地工作,MySQL db,php和Flash代码都在单机上。
答案 0 :(得分:0)
你的问题几乎是你的答案,不是吗?
此值是您需要添加到计算机的分钟数 本地时间等于UTC。如果您的计算机的时间设置晚于 UTC,该值将为负数。
意味着您需要始终将getTimezoneOffset
添加到本地日期以获取UTC日期
所以,
var now:Date=new Date();
var utcOffset=now.getTimezoneOffset() * 60 * 1000;
var utcNow:Date=new Date(now.valueOf() + utcOffset);
现在你有utcNow
的时间。
注意: utcNow
只是utc时间的错误表示(它是用户时区的当前UTC时间。即{{1}将附加用户的原始时区。要获取UNIX时间戳,请使用toString()
内置API函数utcNow.valueOf()
,getUTCDate
,getUTCFullYear
,getUTCHours
,getUTCMinutes
,getUTCMilliseconds
和getUTCMonth
您可以在原始(getUTCSeconds
)Date对象上调用它来获取这些值。