考虑一下我来自印度,我的国家/地区ISO代码是IN or IND or 356
(http://en.wikipedia.org/wiki/ISO_3166-1)。我怎么能用它生成一个JavaScript Date对象?也就是说,在IST。
在Python中,我们有astimezone()。 JavaScript中有类似的东西吗?
PS:允许使用jQuery或任何可信任的第三方API。
答案 0 :(得分:2)
浏览器中的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没有DST,因此该问题最小化,但如果用户的本地时区具有DST并且距离DST偏移仅几个小时,则仍然存在。您可以使用Date.getUTC*
函数来解决DST问题,但请始终记住无法在客户端JavaScript中正确执行时区。目前没有库可以正确处理所有TimeZone规则,包括所有历史日期的夏令时规则。
答案 1 :(得分:1)
您可以使用UTC
设置日期,然后将其转换为LocaleString
。您可以看到Date.prototype.toLocaleString()以获得更多参考资料。
您还可以在堆栈溢出How do I display a date/time in the user's locale format and time offset?上看到问题。
由于
答案 2 :(得分:0)
没有直接的API。但你可以自己编码。
<html>
<body onload="getTimeByTimeZone(5.5)">
<script type="text/javascript">
function getTimeByTimeZone(offset){
var d = new Date()
localTime = d.getTime();
localOffset=d.getTimezoneOffset()*60000;
utcTime=localTime + localOffset;//get utc time
st=utcTime+3600000*offset;//get the specified timezone time
stime=new Date(st);
document.write("The specified time is :"+stime.toString());
}
</script>
</body>
</html>
希望此代码对您有所帮助。