我有一个代码,尝试将日期设置为自当前日期起20天在服务器上。我在javascript中使用了一个变量(例如dateRange)来获取当前日期。但是,对于、setDate()、函数、、dateRange、等变量,第二次使用该变量时,从date开始将其更改为一个时代。我知道我可以转换时代的日期和继续,但有办法停止这种自动转换。
var dateRange=new Date(currentDate);
dateRange = dateRange.setDate(dateRange.getDate() - 20);发布于 2019-07-29 07:21:02
内部日期存储为从划时代日期起的毫秒。要实现您想要做的事情,您可以减去对应于20天的毫秒数:
var currentDate = "2019-07-29T07:14:57.269Z";
var dateRange = new Date(currentDate);
var pastDate = new Date(dateRange - 1000 * 60 * 60 * 24 * 20);
console.log('current', currentDate);
console.log('20 days ago', pastDate);
无论如何,如果您在应用程序中做了大量的日期/时间操作,我建议您使用这个库:https://momentjs.com/
发布于 2019-07-29 07:10:36
setDate修改date对象,并返回划时代值。只是不要在dateRange中保存划时代值,这样您就可以在修改日期对象之后使用它了:
var currentDate = new Date();
var dateRange = new Date(+currentDate);
console.log(dateRange.toISOString());
dateRange.setDate(dateRange.getDate() - 20);
console.log(dateRange.toISOString());
附带注意:在某些浏览器上,通过执行var dateRange = new Date(currentDate);复制日期是/不可靠的。在上面,我将其更改为var dateRange = new Date(+currentDate); (请注意+,将日期转换为其时代值),这是可靠的。
https://stackoverflow.com/questions/57248618
复制相似问题