【发布时间】: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