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

JavaScript";“新日期”;创建时间与原始日期字符串不同的日期,javascript,datetime,Javascript,Datetime,我以字符串形式获取日期'2018-10-15 00:00:00.000',然后使用新日期('2018-10-15 00:00:00.000')将其转换为日期 我将此日期保存到一个数据库(带有API),它将数据保存为2018-10-15**04**:00:00.000。注意凌晨4点的时间。API获取的日期时间为凌晨4:00 在我的angular应用程序中,保存此日期的对象定义为datetype meeting_date: Date; 这是从控制台 dt = new Date('2018-10-

我以字符串形式获取日期
'2018-10-15 00:00:00.000'
,然后使用
新日期('2018-10-15 00:00:00.000')
将其转换为日期

我将此日期保存到一个数据库(带有API),它将数据保存为
2018-10-15**04**:00:00.000
。注意凌晨4点的时间。API获取的日期时间为凌晨4:00

在我的angular应用程序中,保存此日期的对象定义为
date
type

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
。我做错了什么

如果您获得的日期输入字符串表示UTC,则您可能希望在UTC中创建
日期
对象(您当前的方法是在客户端计算机上以本地时间创建
日期
对象,这就是EDT偏移量影响您在数据库中存储的日期时间的原因)。另外,您应该知道
Date()

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

const inputDate='2018-10-15 00:00:00.000';
让[y,m,d,hh,mm,ss,ms]=inputDate.match(/\d+/g);
let date=新日期(date.UTC(y,m-1,d,hh,mm,ss,ms));
log(JSON.stringify(date));
//日期作为UTC字符串
log(date.toutString());
//日期作为本地字符串

log(date.toString())这取决于您的数据库/服务器时区和语言环境,请保存时间戳而不是代替欢迎来到噩梦,即代码中的日期和时间。问题几乎可以肯定是浏览器、web服务器和数据库中的时区之间存在差异。如果使用UTC时间戳,则此问题应自行解决。谢谢。让我试试UTC timestampUpvoted,让[y,m,d,hh,mm,ss,ms]=inputDate.match(/\d+/g)我以前从未见过这种情况,但这使处理日期字符串变得简单@AdamH-它对于这些类型的日期字符串非常有用。带有alpha月的日期字符串等必须以稍微不同的方式处理。