gpt4 book ai didi

javascript - 在任意一天的任意时区获取日期的本地时间表示 - 考虑夏令时

转载 作者:行者123 更新时间:2023-11-30 17:38:20 34 4
gpt4 key购买 nike

当然,有一个 lotquestions关于Date objectstimezones但他们中的许多人都是关于将当前时间转换为另一个时区,而其他人则不太清楚他们想做什么。

我想在任意一天的任意时区显示日期、小时、分钟等。例如,我想要一个函数 f(t, s) :

  • 给定时间戳 1357041600(即 2013/1/1 12:00:00 UTC)和字符串 "America/Los Angeles",将满足以下比较:

    f(1357041600, "America/Los Angeles") == "2013/01/01 04:00:00"
  • 给定时间戳 1372680000 (2013/07/01 12:00:00 UTC),将满足以下比较:

    f(1357041600, "America/Los Angeles") == "2013/07/01 05:00:00"
  • 即使浏览器中的时区是“Europe/London”“America/São Paulo”,也会始终如此。

  • 即使浏览器中的时间是 2014/02/05 19:32 或 2002/08/04 07:12,也会始终如此;和

  • 作为最后的限制,不会从服务器端请求任何东西(因为我几乎是自己做的:))

有可能吗?

最佳答案

given the timestamp 1357041600 (which is 2013/1/1 12:00:00 UTC)

这似乎是自 UNIX 纪元 (1970-01-01T00:00:00Z) 以来的秒数。 Javascript 使用相同的纪元,但以毫秒为单位,因此可以创建合适的日期对象:

var d = new Date(timestamp * 1000);

这将创建一个具有合适时间值的 Date 对象。然后您需要使用 IANA time zone database 之类的东西来确定时区偏移量.可以使用 UTC 方法将其应用于 Date 对象。例如。将偏移量解析为分钟,然后使用:

d.setUTCMinutes(d.getUTCMinutes() + offset)

然后可以使用 UTC 方法获取调整后的日期和时间值,以创建您需要的任何格式的字符串:

var dateString = d.getUTCFullYear() + '/' + pad(d.getUTCMonth() + 1) + '/' ...

其中 pad 是一个将前导零添加到单个数字值的函数。使用 UTC 方法可避免本地时区偏移和夏令时差异的任何影响。

还有像timezone.js这样的库可用于确定偏移量,但我没有使用它们,因此不暗示任何背书。

关于javascript - 在任意一天的任意时区获取日期的本地时间表示 - 考虑夏令时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21590465/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com