如何假设新的日期(YYYY-MM-DD)输入是UTC日期

问题描述 投票:0回答:3

我需要从格式为

Date
的 UTC 日期字符串生成 JavaScript
YYYY-MM-DD
。 这是一个例子:

var date = new Date('2018-01-31');

创建的日期是:

2018 年 1 月 30 日星期二 19:00:00 GMT-0500(东部标准时间)

考虑到时区偏移,日期是昨天。

如何创建一个假定永恒输入为 UTC 的 javascript 日期?

javascript date
3个回答
4
投票

您可以使用 Date.UTC 。
这是来自 https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/Date/UTC

的示例
var utcDate1 = new Date(Date.UTC(96, 1, 2, 3, 4, 5));
var utcDate2 = new Date(Date.UTC(0, 0, 0, 0, 0, 0));

console.log(utcDate1.toUTCString());
// expected output: Fri, 02 Feb 1996 03:04:05 GMT

console.log(utcDate2.toUTCString());
// expected output: Sun, 31 Dec 1899 00:00:00 GMT

所以你得到这个解决方案:

var test = "2018-01-31";
var year = test.substr(0,4);
var month =  test.substr(5,2) -1;
var day =  test.substr(8,2);

var utcDate1 = new Date(Date.UTC(year,month,day));
alert(utcDate1.toUTCString());
// expected output:Wed, 31 Jan 2018 00:00:00 GMT

2
投票

您可以使用

Date.UTC
split
spread operator syntax
...
不是运算符)
:

的组合

var convertedDate = '2018-01-31'.split('-');
convertedDate[1] = convertedDate[1] - 1 // Date.UTC expects a value from 0-11

var date = new Date(Date.UTC(...convertedDate))
console.log(date.toDateString());

需要注意的是

Date.UTC
预计月份为 0-11(出于某种原因)


0
投票

我调用

toISOString()
,将其拆分为“T”分隔符,并获取第一个子字符串:

var date = new Date('2018-01-31')
var utcDate = date.toISOString().split('T')[0];

或单层:

var utcDate = (new Date('2018-01-31')).toISOString().split('T')[0];
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.