这是我的后续行动上一个问题 https://stackoverflow.com/questions/11632421/creating-actionscript-date-object-from-mysql-utc-timestamp-string。在我获取当前时间的解决方案中,我需要添加/减去偏移量:
var createDate:Date = new Date();
var offset:Number = createDate.getTimezoneOffset() * 60 * 1000;
createDate.time = parseInt("1343174921") * 1000 - offset; // subtracting offset
为了获得正确的时间,我必须减去偏移量(纯粹猜测)。我如何知道减去或添加偏移量?的文档获取时区偏移量 http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/Date.html#timezoneOffset says:
该值是您需要添加的分钟数
计算机的本地时间等于 UTC。如果您的计算机时间已设置
晚于 UTC,该值将为负值。
有没有一种简单的方法可以确定计算机的时间设置是否晚于/早于 UTC,以便我知道是否需要添加或减去偏移量?
update我已经检查了数据库,并且正在存储创建于的条目7/25/2012 at 8pm
as 1343282417
(我在用着UTC_TIMESTAMP() http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_utc-timestamp存储日期)。当我将它插入 Unix 时间戳转换器时,我得到Thu, 26 Jul 2012 06:00:17 GMT
。所以我很困惑为什么 MySql 的 UTC_TIMESTAMP (假设返回当前 UTC 日期和时间)给我一个不同的日期。我在本地工作,MySQL db、php 和 Flash 代码都在一台机器上。
你的问题几乎就是你的答案,不是吗?
该值是您需要添加到计算机的分钟数
本地时间等于 UTC。如果您的计算机时间设置晚于
UTC,该值将为负数。
这意味着您需要始终添加getTimezoneOffset
到本地日期以获取 UTC 日期
So,
var now:Date=new Date();
var utcOffset=now.getTimezoneOffset() * 60 * 1000;
var utcNow:Date=new Date(now.valueOf() + utcOffset);
您现在的 UTC 时间为utcNow
.
Note: utcNow
只是 utc 时间的错误表示(它是用户时区中的当前 UTC 时间。也就是说,toString()
将附加用户的原始时区。要获取 UNIX 时间戳,请使用utcNow.valueOf()
有内置的API函数getUTCDate
, getUTCFullYear
, getUTCHours
, getUTCMinutes
, getUTCMilliseconds
, getUTCMonth
, and getUTCSeconds
你可以调用原来的(now
) 日期对象仅获取这些值。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)