我将日期作为字符串'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 am。
在我的角度应用程序中,保存该日期的对象定义为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
。我究竟做错了什么?
答案 0 :(得分: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());