如何防止Javascript将本地时区应用于Date()对象?
假设我创建了一个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,这样,如果他们在
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