javascript - 如何在给定国家/地区 ISO 代码的情况下创建 Javascript Date() 对象?

标签 javascript date timezone country-codes

假设我来自印度,我的国家/地区 ISO 代码是 IN 或 IND 或 356 ( http://en.wikipedia.org/wiki/ISO_3166-1 )。我如何用它生成一个 JavaScript Date 对象?也就是说,在 IST 中。

在 Python 中,我们有 astimezone() . JavaScript 中有类似的东西吗?

PS:允许使用 jQuery 或任何受信任的第三方 API。

最佳答案

浏览器中的 JavaScript 不是时区感知语言。它只能使用两个时区:UTC 和本地时区,其中本地时区取决于浏览器的时区或浏览器运行的操作系统。

如果您的浏览器(以及您用户的浏览器)设置为 IST,则所有日期都将显示在 IST 中。如果您的浏览器未设置为 IST,那么您就有点不走运了。

现在,您可以使用一些技巧。例如,您可以执行以下操作:

var d = new Date();  // creates a date in user's local timezone

var istD = new Date(d.getTime() + (d.getTimezoneOffset() + 330) * 60000)
// 330 is the IST offset (5h 30m == 330m)

istD 现在是一个日期对象,它将“在 IST 中打印日期”。请注意,此日期对象仍在用户的本地时区中,但只要您不显示时区部分,它就会显示为 IST。

夏令时有一个小问题。由于 IST 没有夏令时,这个问题被最小化了,但如果用户的本地时区有夏令时并且您距离夏令时偏移只有几个小时,那么这个问题仍然存在。您或许可以尝试使用 Date.getUTC* 函数来规避 DST 问题,但请始终记住,无法在客户端 JavaScript 中正确设置时区。目前没有任何库可以正确处理所有时区规则,包括所有历史日期的夏令时规则。

关于javascript - 如何在给定国家/地区 ISO 代码的情况下创建 Javascript Date() 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20673910/

相关文章:

timezone - Laravel 流明没有保存正确的时区

date - 我如何判断DateTime.Now()是否在其他DateTime之后的一天

date - 将字符串日期转换为时间戳

Ruby:按年和月对日期范围进行分组

Java:从 OSGi 应用程序中设置时区

c# - TimeZone.IsInvalidTime 未捕获 2010 年埃及夏令时造成的无效时间

javascript - ReactJS + Redux : How to directly navigate to a page (skip login) if token is in local storage?

javascript - 如何在 JavaScript Promise 中将一个 then() block 的结果传递到下一个 then() block ?

javascript - 为什么我的 EL 语句只在我不通过 src 引用导入 js.file 的脚本标签中工作?

javascript - 更改类以将其添加到链接