37

似乎 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)

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

4

5 回答 5

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

"Wed, 20 Jun 2012 08:55:20"

<script>
  var offset = -8;

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

于 2012-06-20T16:56:43.433 回答
21

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

let d = new Date(new Date().toLocaleString("en-US", {timeZone: "timezone id"})); // timezone ex: Asia/Jerusalem
于 2019-09-14T00:47:03.517 回答
5
var today = new Date();  
var offset = -(today.getTimezoneOffset()/60);  
于 2012-06-20T16:50:25.650 回答
0

可以在https://github.com/mde/timezone-js找到一个用于轻松处理时区的简单库,称为 TimezoneJS 。

于 2013-05-03T09:26:53.890 回答
-1

您始终可以获得 GMT 时间(只要客户的时钟正确)。

要在任意时区显示日期,请在添加偏移量后从 UTC 小时、分钟和秒构造一个字符串。

于 2012-06-20T16:55:06.537 回答