如何防止Javascript将本地时区应用于Date()对象?

如何防止Javascript将本地时区应用于Date()对象?,javascript,date,Javascript,Date,假设我创建了一个Date()对象,并以毫秒为单位从纪元时间开始传递,如下所示: var d = new Date(0); 然后: 输出: Wed Dec 31 1969 16:00:00 GMT-0800 (Pacific Standard Time) 如果我调用d.getHours()则输出为: 16 在我的用例中,这是不可取的 如何创建忽略用户本地时区/系统时钟设置的日期对象?我希望能够以毫秒为单位传递时间(从epoch time开始),并将其显示为用户始终处于UTC,这样,如果他们在

假设我创建了一个Date()对象,并以毫秒为单位从纪元时间开始传递,如下所示:

var d = new Date(0);
然后:

输出:

Wed Dec 31 1969 16:00:00 GMT-0800 (Pacific Standard Time)
如果我调用
d.getHours()
则输出为:

16
在我的用例中,这是不可取的


如何创建忽略用户本地时区/系统时钟设置的日期对象?我希望能够以毫秒为单位传递时间(从epoch time开始),并将其显示为用户始终处于UTC,这样,如果他们在Windows中更改系统时钟,则不会更改显示内容。

这将为您提供
16:00:00
<代码>d.getHours()+“:”+d.getMinutes()+“:”+d.getSeconds()

编辑:这是获取整个日期的方法

var-days=['sun','mon','tue','wed','thur','fri','sat'];
var月=['1月'、'2月'、'3月'、'4月'、'5月'、'6月'、'7月'、'8月'、'9月'、'10月'、'11月'、'12月'];
var d=新日期();
变量日期=天[d.getDate()]+“”+月[d.getMonth()]+“”+d.getFullYear()+“”+d.getHours()+“:“+d.getMinutes()+”:“+d.getSeconds()+“GMT”+d.getTimezoneOffset();

控制台日志(日期)这将为您提供
16:00:00
<代码>d.getHours()+“:”+d.getMinutes()+“:”+d.getSeconds()

编辑:这是获取整个日期的方法

var-days=['sun','mon','tue','wed','thur','fri','sat'];
var月=['1月'、'2月'、'3月'、'4月'、'5月'、'6月'、'7月'、'8月'、'9月'、'10月'、'11月'、'12月'];
var d=新日期();
变量日期=天[d.getDate()]+“”+月[d.getMonth()]+“”+d.getFullYear()+“”+d.getHours()+“:“+d.getMinutes()+”:“+d.getSeconds()+“GMT”+d.getTimezoneOffset();
控制台日志(日期)使用:

var d=新日期(0);
log(d.toutString())使用:

var d=新日期(0);
log(d.toutString())
var now=newdate();
var utcDate=新日期(Date.UTC(now.getFullYear(),now.getMonth(),now.getDay(),0,0,0));
控制台日志(utcDate)
var now=newdate();
var utcDate=新日期(Date.UTC(now.getFullYear(),now.getMonth(),now.getDay(),0,0,0));
控制台日志(utcDate)
如何创建忽略用户本地时区的日期对象

日期的核心是UTC时间值。仅在创建时间值或输出值(getDate、getHours等)时才考虑主机时区

因此,如果要为特定UTC时间创建日期,请使用UTC方法,输出方法也一样。向日期构造函数提供单个数值时,自1970-01-01T00:00:00Z起,它被视为毫秒,UTC/GMT也是如此

e、 g

var d=新日期(0);//与历元的零偏移
document.write(d.getUTCHours())//0
//toISOString使用偏移量+00:00
document.write(“
”+d.toISOString());//ECMAScript纪元
如何创建忽略用户本地时区的日期对象

日期的核心是UTC时间值。仅在创建时间值或输出值(getDate、getHours等)时才考虑主机时区

因此,如果要为特定UTC时间创建日期,请使用UTC方法,输出方法也一样。向日期构造函数提供单个数值时,自1970-01-01T00:00:00Z起,它被视为毫秒,UTC/GMT也是如此

e、 g

var d=新日期(0);//与历元的零偏移
document.write(d.getUTCHours())//0
//toISOString使用偏移量+00:00

document.write(“
”+d.toISOString());//ECMAScript epoch
简短的回答是您不能。但是,您可以获取用户当前的TZ偏移量:或者,您可以将创建指定为UTC:但是,当您将字符串()转换为日期时,它仍将显示本地TZ偏移量。谢谢,我只是从传递到date()的原始毫秒长度中减去时区偏移量,然后从中创建了一个日期,并按预期工作。如果您创建了一个答案,我将选中它it@Joey-你不必减去偏移量。这样做意味着内置的toString将附加偏移量,并使日期显示为不同的时间。但是,您可以获取用户当前的TZ偏移量:或者,您可以将创建指定为UTC:但是,当您将字符串()转换为日期时,它仍将显示本地TZ偏移量。谢谢,我只是从传递到date()的原始毫秒长度中减去时区偏移量,然后从中创建了一个日期,并按预期工作。如果您创建了一个答案,我将选中它it@Joey-你不必减去偏移量。这样做意味着内置的toString将附加偏移量,并使其看起来日期是另一个时间。没有回答这个问题。@Evantimboli现在工作了,我添加了
“GMT”+d.getTimezoneOffset()没有回答这个问题。@Evantimboli现在成功了,我添加了
“GMT”+d.getTimezoneOffset()2016年6月3日16:35为我返回“2016-06-05T00:00:00.000Z”。2016年6月3日16:35为我返回“2016-06-05T00:00:00.000Z”。
16