【JavaScript】分别获取当天 00:00:00 与 23:59:59 之 toLocaleDateString 的坑

分别获取当天 00:00:00 与 23:59:59有一个很简便的方法,就是:

var startTime = new Date(
new Date(new Date().toLocaleDateString()).getTime()
); 

var expireTime = new Date(
new Date(new Date().toLocaleDateString()).getTime() + 24 * 60 * 60 * 1000 - 1000
);

这个方法确实非常的简单且有效,我之前在一个项目中也有使用到,但就是这个项目在使用edge浏览器启动时,toLocaleDateString()出现了问题。

现象:
最直接的现象就是这个功能失效啦,也没有报错和警告,排查了一下发现问题就出在toLocaleDateString()上。

原因:
https://segmentfault.com/a/1190000009391790
这篇文章的作者我觉得解释的很清楚,我也是看了他的文章才知道原因,在这里我就不多说了。

解决方案:
这个方法肯定是不能用啦,我选择写了一个函数,手动置零。

resetTime(value){
	value.setHours(0);
	value.setMinutes(0);
	value.setSeconds(0);
	value.setMilliseconds(0);
	return value;
},

调用这个函数可获得你想获得的某天的 00:00:00 ,
再"+ 24 * 60 * 60 * 1000 - 1000"就可以获得 23:59:59了 ,
以此类推可以获得一天中的任一一个时刻。

另外:
https://blog.csdn.net/qq_38188485/article/details/81012417?utm_source=blogxgwz1
这篇文章介绍了《 js获取当天时间0点到24点的时间戳 》虽然里面也有提到使用toLocaleDateString(),但是觉得写的还是蛮有价值,可以参考一下。

你可能感兴趣的:(javascript)