【问题标题】:Translating ActionScript Date from UTC to local time with milliseconds from epoch将 ActionScript 日期从 UTC 转换为本地时间,从纪元开始以毫秒为单位
【发布时间】:2012-07-26 09:08:57
【问题描述】:

这是对我的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 代码都在单台机器上。

【问题讨论】:

  • getTimezoneOffset 不是正数还是负数,取决于它设置得早还是晚?所以你应该只使用加法,如果 getTimezoneOffset 返回负数,它将被减去。 if(createDate.getTimezoneOffset()
  • 我在美国中部时间,所以 getTimezoneOffset 应该为负数吗?
  • 应该是肯定的,我在多伦多,所以 EST 我从 getTimezoneOffset 得到 240。
  • 那么如果我添加偏移量 createDate.time = parseInt("1343174921") * 1000 + offset; (用 parseInt 中的字符串代替您的时间)。我弄错时间了。只有当我减去偏移量时,我才能看到正确的时间。我在这里错过了一些东西。
  • 尝试不使用 int 而是使用 Number createDate.time = Number("1343174921") * 1000 + offset; INT 只能在您的代码中断之前变得如此之大,并且您的偏移量为 *1000+,这使得它非常大

标签: actionscript-3


【解决方案1】:

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

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

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

所以,

var now:Date=new Date();

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

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

您现在拥有utcNow 中的UTC 时间。

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

有内置的 API 函数 getUTCDategetUTCFullYeargetUTCHoursgetUTCMinutesgetUTCMillisecondsgetUTCMonthgetUTCSeconds,您可以在原始 (now) 日期对象上调用它们仅获取这些值。

【讨论】:

  • 这就是我的想法,但如果我添加 getTimezoneOffset 我会得到错误的时间。我必须减去它才能得到正确的时间。
猜你喜欢
  • 1970-01-01
  • 2014-03-14
  • 2021-03-01
  • 2020-12-04
  • 2023-03-03
  • 1970-01-01
  • 2021-12-31
  • 2011-06-05
  • 2020-09-14
相关资源
最近更新 更多