使用JavaScript获取特定时区的日期时间

Yan*_*ang 28 javascript date

似乎JavaScript的Date()函数只能返回本地日期和时间.无论如何有时间为特定时区,例如GMT-9?

结合@ Esailija和@ D3mon-1stVFW,我想出来了:你需要有两个时区偏移,一个用于本地时间,一个用于目的地时间,这里是工作代码:

var today = new Date();  
var localoffset = -(today.getTimezoneOffset()/60);
var destoffset = -4; 

var offset = destoffset-localoffset;
var d = new Date( new Date().getTime() + offset * 3600 * 1000)
Run Code Online (Sandbox Code Playgroud)

这里有一个例子:http://jsfiddle.net/BBzyN/3/

Esa*_*ija 22

var offset = -8;
new Date( new Date().getTime() + offset * 3600 * 1000).toUTCString().replace( / GMT$/, "" )

"Wed, 20 Jun 2012 08:55:20"
Run Code Online (Sandbox Code Playgroud)

<script>
  var offset = -8;

  document.write(
    new Date(
      new Date().getTime() + offset * 3600 * 1000
    ).toUTCString().replace( / GMT$/, "" )
  );
</script>
Run Code Online (Sandbox Code Playgroud)

  • var offset = -8; var d = new Date(new Date()+ offset * 3600 * 1000)alert(d); 会给我错误的PST时间(现在显示的是03:06,而不是现在的10:06),这有什么问题吗? (2认同)
  • @Yang你可以使用这个解决方案,只要你使用UTC方法`getUTCHours()`,`getUTCMinutes()`,`toUTCString()`等...`alert(d)`的问题是它确实`alert(d.toString()`,在这种情况下你想要`toUTCString`. (2认同)

E. *_*rim 12

您可以在一行中执行此操作:

let d = new Date(new Date().toLocaleString("en-US", {timeZone: "timezone id"})); // timezone ex: Asia/Jerusalem
Run Code Online (Sandbox Code Playgroud)


Hit*_*eeb 6

var today = new Date();  
var offset = -(today.getTimezoneOffset()/60);  
Run Code Online (Sandbox Code Playgroud)