Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将JS日期初始化为本地午夜的最佳方式是什么?_Javascript_Date_Datetime - Fatal编程技术网

Javascript 将JS日期初始化为本地午夜的最佳方式是什么?

Javascript 将JS日期初始化为本地午夜的最佳方式是什么?,javascript,date,datetime,Javascript,Date,Datetime,我在StackOverflow上做了很多研究,但似乎没有找到正确的答案 假设我有一个采用这种格式的日期,我正试图用它创建一个日期对象。以2014-04-04为例。当我更改新日期(“2014-04-04”)时,将导致: 2014年4月3日星期四20:00:00 GMT-0400(东部夏时制) 但我真正想要的是当地时区日期的午夜,类似这样: 2014年4月4日星期四00:00:00 GMT-0400(东部夏时制) 在没有库的JS中,最快的方法是什么?格式为yyyy MM dd的时间戳由内置解析器解析

我在StackOverflow上做了很多研究,但似乎没有找到正确的答案

假设我有一个采用这种格式的日期,我正试图用它创建一个日期对象。以2014-04-04为例。当我更改新日期(“2014-04-04”)时,将导致:

2014年4月3日星期四20:00:00 GMT-0400(东部夏时制)

但我真正想要的是当地时区日期的午夜,类似这样:

2014年4月4日星期四00:00:00 GMT-0400(东部夏时制)


在没有库的JS中,最快的方法是什么?

格式为yyyy MM dd的时间戳由内置解析器解析为UTC(per),因此对于设置为负UTC偏移量的系统,本地日期将是前一天。因此,您必须首先将字符串解析为本地日期,此时您还可以将时间设置为24:00,或者只在一天中添加一个时间(如果+1超过月末,则由构造函数处理,因此4月31日变为5月1日)

//将格式为yyyy mm dd的日期解析为本地午夜
//到头来
函数parseAsLocalMidnight(s){
设[y,m,d]=s.split(/\d/);
返回新日期(y、m-1、+d+1);
//或
//返回新日期(y、m-1、d、24);
}

console.log(parseAsLocalMidnight('2021-04-17').toString());//2021年4月18日星期日00:00:00[本地偏移量]
这不是问题的所在<代码>设置小时数(0,0)将导致
2014年4月3日周四00:00:00 GMT-0400(东部夏令时)
与示例一起使用
日期。设置小时数(24,0)
用于其他午夜:-)