【发布时间】:2025-11-23 07:15:01
【问题描述】:
我有 UTC 格式的 unix TimeStamp 值。我想将该时间戳转换为带有时区的本地日期和时间。
通过使用以下代码,我可以转换为 UTC 日期和时间
function convertTimestamp(timestamp) {
var d = new Date(timestamp * 1000),
yyyy = d.getFullYear(),
mm = ('0' + (d.getMonth() + 1)).slice(-2),
dd = ('0' + d.getDate()).slice(-2),
hh = d.getHours(),
h = hh,
min = ('0' + d.getMinutes()).slice(-2),
time;
time = yyyy + '-' + mm + '-' + dd + ', ' + h + ':' + min + ' ';
return time;
}
例子:
3680283088 => 2017 年 5 月 10 日 13:46:49 EDT
请推荐正确的方法将UTC时间戳转换为带有时区的本地日期和时间。
【问题讨论】:
-
timestamp
3680283088给出的日期是 2086 年,您确定这是正确的值吗? -
它只是一个虚拟值
-
在这种情况下,我认为完全值得使用库——我个人喜欢moment.js。要处理时区,您还需要moment timezone。另一个细节是像
EDT这样的短名称是ambiguous and not standard。更喜欢使用IANA timezones names(始终采用Region/City格式,如America/New_York或Europe/Berlin) -
@Hugo - 在这种情况下,缩写是显示值的一部分,所以它不是一个 tzid 的地方。但是,有些缩写确实是模棱两可的,tzdb 一直在删除“发明”的缩写,用数字偏移代替它们。所以是的,这有很多问题。另外,不要忘记 Intl/402,正如我在回答中所展示的那样。它现在几乎无处不在,是开始使用它的好时机。 :)
-
是的,确实如此(我维护它)。并同意你的看法。只是 OP 要求没有外部依赖的解决方案。
标签: javascript datetime timezone