JavaScript“新日期”创建日期与时间不同于原始日期字符串

问题描述 投票:1回答:1

我得到一个字符串'2018-10-15 00:00:00.000'日期,然后使用new Date('2018-10-15 00:00:00.000')将其转换为日期。

我将此日期保存到数据库(使用API​​),并将数据保存为2018-10-15 **04**:00:00.000。请注意凌晨4点。 API将日期时间设置为凌晨4:00。

enter image description here

在我的角度应用程序中,保存此日期的对象被定义为Date类型。

meeting_date: Date;

这是来自控制台。

dt = new Date('2018-10-15 00:00:00.000')
Mon Oct 15 2018 00:00:00 GMT-0400 (Eastern Daylight Time)

JSON.stringify(dt)
""2018-10-15T04:00:00.000Z""

我想将日期保存为2018-10-15 00:00:00.000。我究竟做错了什么?

javascript datetime
1个回答
2
投票

如果您获得的日期输入字符串代表UTC,那么您可能希望以UTC格式创建Date对象(您当前的方法是在客户端计算机上以本地时间创建Date对象,这就是EDT偏移影响日期时间的原因存储在您的数据库中)。另外,你应该知道Date()not recommended for parsing date strings due to browser inconsistencies

以下是使用一些简单的正则表达式解析字符串并以UTC格式创建Date对象的示例:

const inputDate = '2018-10-15 00:00:00.000';
let [y, m, d, hh, mm, ss, ms] = inputDate.match(/\d+/g);
let date = new Date(Date.UTC(y, m - 1, d, hh, mm, ss, ms));

console.log(JSON.stringify(date));

// date as UTC string
console.log(date.toUTCString());

// date as local string
console.log(date.toString());
© www.soinside.com 2019 - 2024. All rights reserved.