【发布时间】:2015-10-19 18:56:21
【问题描述】:
我的目标是将表示 Unix 纪元时间(或自 1970 年 1 月 1 日午夜以来的毫秒数)的整数转换为 UTC(或 GMT)时区的本地化时间。
所以我有这个方法:
function formatDateTimeFromTicks(nTicks)
{
//'nTicks' = number of milliseconds since midnight of January 1, 1970
//RETURN:
// = Formatted date/time
return new Date(nTicks).toLocaleString();
}
作为一个例子,我使用1442004135000 的值,这应该为我的语言环境提供9/11/2015 8:42:15 PM(您可以检查here),但我的方法:
alert(formatDateTimeFromTicks(1442004135000));
给我9/11/2015 1:42:15 PM。
知道为什么以及如何解决它吗?
【问题讨论】:
-
您的区域设置是什么?我晚上 8 点 42 分,我的时区设置为 CEST。准确地说,我得到“2015 年 9 月 11 日 22:42:15 UTC+2”
-
@Touffy:在这种情况下,时区无关紧要,因为我需要它来显示 UTC(或格林威治)时区的时间。区域设置应仅用于格式化日期/时间本身。换句话说,它不应该转换任何东西。
-
对,抱歉,您需要 UTC。希望我的回答有帮助。
-
感觉就像
new Date(nTicks)转换成当地时间。我不知道为什么? -
您可以要求 new Date().toUTCString() 但您不能以本地语言环境格式获得它。
标签: javascript localization locale unix-timestamp