我尝试了以下代码
var parts ='2014-04-03'.split('-');
// Please pay attention to the month (parts[1]); JavaScript counts months from 0:
// January - 0, February - 1, etc.
var mydate = new Date(+parts[0], +parts[1] - 1, +parts[2]);
console.log(mydate);
但是,结果是
2014-04-02T17:00:00:000Z
我想知道为什么结果不是2014-04-03
谢谢
答案 0 :(得分:1)
当心,javascript在创建日期和序列化日期时都会潜入本地时区。显示的代码new Date(int,int,int)
创建了一个日期对象,该对象表示指定的年/月/日的本地午夜。
YYYY-MM-DD日期。只需执行new Date('2014-04-03')
。这将为您提供a midnight UTC date object,正是您想要的。
这时,您需要对格式化(序列化)时使用的方法稍加小心,更多有关上面链接的详细信息。
var myDate = new Date('2014-04-03')
console.log(myDate.toLocaleDateString("fr",{timezone:"UTC"}))
答案 1 :(得分:0)
您可以使用一个Javascript函数将日期转换为所需的'yyyy-MM-dd'格式。 下面是代码段。
function DateToStr(date, format) {
let z = {
y: date.getFullYear(),
M: date.getMonth() + 1,
d: date.getDate(),
h: date.getHours(),
m: date.getMinutes(),
s: date.getSeconds()
};
return format.replace(/(y+|M+|d+|h+|m+|s+)/g, v => ('0' + z[v.slice(-1)]).slice(-v.length));
}
var parts = '2014-04-03'.split('-');
var mydate = new Date(parts[0], parts[1] - 1, parts[2]);
var a = DateToStr(mydate, 'yyyy-MM-dd')
console.log(a);
答案 2 :(得分:0)
使用Date.UTC时,它会以UTC格式处理日期,并丢弃本地时区和夏时制。
var parts ='2014-04-03'.split('-');
// Please pay attention to the month (parts[1]); JavaScript counts months from 0:
// January - 0, February - 1, etc.
var mydate = new Date(Date.UTC(+parts[0], +parts[1] - 1, +parts[2]));
console.log(mydate);