首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在javascript中停止日期到时代的转换

在javascript中停止日期到时代的转换
EN

Stack Overflow用户
提问于 2019-07-29 07:00:56
回答 2查看 147关注 0票数 0

我有一个代码,尝试将日期设置为自当前日期起20天在服务器上。我在javascript中使用了一个变量(例如dateRange)来获取当前日期。但是,对于、setDate()、函数、、dateRange、等变量,第二次使用该变量时,从date开始将其更改为一个时代。我知道我可以转换时代的日期和继续,但有办法停止这种自动转换。

代码语言:javascript
复制
var dateRange=new Date(currentDate);  
dateRange = dateRange.setDate(dateRange.getDate() - 20);
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-07-29 07:21:02

内部日期存储为从划时代日期起的毫秒。要实现您想要做的事情,您可以减去对应于20天的毫秒数:

代码语言:javascript
复制
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/

票数 -1
EN

Stack Overflow用户

发布于 2019-07-29 07:10:36

setDate修改date对象,并返回划时代值。只是不要在dateRange中保存划时代值,这样您就可以在修改日期对象之后使用它了:

代码语言:javascript
复制
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); (请注意+,将日期转换为其时代值),这是可靠的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57248618

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档