Actionscript 3 将ActionScript日期从UTC转换为本地时间(从历元开始以毫秒为单位)

Actionscript 3 将ActionScript日期从UTC转换为本地时间(从历元开始以毫秒为单位),actionscript-3,Actionscript 3,这是对我的研究的后续。在获取当前时间的解决方案中,我需要添加/减去偏移: var createDate:Date = new Date(); var offset:Number = createDate.getTimezoneOffset() * 60 * 1000; createDate.time = parseInt("1343174921") * 1000 - offset; // subtracting offset 为了得到正确的时间,我必须减去偏移量(纯猜测)。我如何知道减去或添

这是对我的研究的后续。在获取当前时间的解决方案中,我需要添加/减去偏移:

var createDate:Date = new Date();
var offset:Number = createDate.getTimezoneOffset() * 60 * 1000; 
createDate.time = parseInt("1343174921") * 1000 - offset; // subtracting offset
为了得到正确的时间,我必须减去偏移量(纯猜测)。我如何知道减去或添加偏移量?文件说明:

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

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


更新我已检查了数据库,并将2012年7月25日晚上8点创建的条目存储为
1343282417
(我用于存储日期)。当我将它插入Unix时间戳转换器时,我得到了
周四,2012年7月26日06:00:17 GMT
。所以我很困惑为什么MySql的UTC_时间戳(假设返回当前UTC日期和时间)会给我一个不同的日期。我在本地工作,MySQL db、php和Flash代码都在一台机器上

你的问题就是你的答案,不是吗

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

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

所以

现在,utc时间在
utcNow

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


有内置的API函数
getUTCDate
getUTCFullYear
getUTCHours
getUTCMinutes
getUTCMilliseconds
getUTCMonth
,以及
getUTCSeconds
,您可以对原始函数进行调用(
now
)Date对象仅获取这些值。

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

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

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

所以

现在,utc时间在
utcNow

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


有内置的API函数
getUTCDate
getUTCFullYear
getUTCHours
getUTCMinutes
getUTCMilliseconds
getUTCMonth
,以及
getUTCSeconds
,您可以对原始函数进行调用(
now
)Date对象仅获取这些值。

getTimezoneOffset是否会根据其设置的更早或更晚而变为正或负?因此,您应该只使用加法,如果getTimezoneOffset返回负值,则会将其减去。如果(createDate.getTimezoneOffset()<0)timeSetLater比UTC晚。也许我遗漏了什么。我在美国中部时间,所以getTimezoneOffset应该是负数吗?它应该是正数,我在多伦多,所以我从getTimezoneOffset得到240。然后如果我添加偏移量createDate.time=parseInt(“1343174921”)*1000+偏移量;(用parseInt中的字符串替换你的时间)。我得到了错误的时间。只有当我减去偏移量时,我才能看到正确的时间。我在这里使用了一些东西。请尝试不使用int,而是使用Number createDate.time=Number(“1343174921”)*1000+偏移量;INT只能在代码中断之前变大,而您是*1000+偏移量,这使得它变得非常大。getTimezoneOffset不可能是正的或负的,这取决于它是早设置还是晚设置的?所以您应该只使用加法,如果getTimezoneOffset返回负数,它将被减去。如果(createDate.getTimezoneOffset()<0)时间比UTC晚。可能我遗漏了什么。我在美国中央时间,所以getTimezoneOffset应该是负数吗?它应该是正数,我在多伦多,所以我从getTimezoneOffset得到240。然后如果我添加偏移量createDate.time=parseInt(“1343174921”)*1000+偏移量;(用parseInt中的字符串替换您的时间)。我得到了错误的时间。只有当我减去偏移量时,我才能看到正确的时间。我在这里使用了一些东西。请尝试不使用int,而是使用Number createDate.time=Number(“1343174921”)*1000+偏移量;INT只能在代码中断之前变大,而你是*1000+偏移量,这使得它变得非常大。这是我的想法,但如果我加上getTimezoneOffset,我会得到一个错误的时间。我必须减去它才能得到正确的时间。这是我的想法,但如果我加上getTimezoneOffset,我会得到一个错误的时间。我必须减去它才能得到ri是时候了。
var now:Date=new Date();

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

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