尝试在毫秒内添加3天到当前日期

dma*_*man 30 javascript date

var dateObj = new Date();
var val = dateObj.getTime();
//86400 * 1000 * 3  Each day is 86400 seconds
var  days = 259200000;

val = val + days;
dateObj.setMilliseconds(val);
val = dateObj.getMonth() + 1 + "/" + dateObj.getDate() + "/" + dateObj.getFullYear();
alert(val);
Run Code Online (Sandbox Code Playgroud)

我试图获取当前日期,添加三天毫秒,并在当前3天后显示日期戳.例如 - 如果今天是10/09/2012,那么我希望它说10/12/2012.

这种方法不起作用,我得到了几个月和几天的关闭.有什么建议?

SRe*_*ect 49

要添加时间,请获取当前日期,然后以毫秒为单位添加特定时间量,然后使用以下值创建新日期:

// get the current date & time
var dateObj = Date.now();

// Add 3 days to the current date & time
//   I'd suggest using the calculated static value instead of doing inline math
//   I did it this way to simply show where the number came from
dateObj += 1000 * 60 * 60 * 24 * 3;

// create a new Date object, using the adjusted time
dateObj = new Date(dateObj);
Run Code Online (Sandbox Code Playgroud)

进一步解释; 原因dataObj.setMilliseconds()不起作用是因为它将dateobj的毫秒PROPERTY设置为指定值(介于0和999之间的值).它不会以毫秒为单位设置对象的日期.

// assume this returns a date where milliseconds is 0
dateObj = new Date();

dateObj.setMilliseconds(5);
console.log(dateObj.getMilliseconds()); // 5

// due to the set value being over 999, the engine assumes 0
dateObj.setMilliseconds(5000);
console.log(dateObj.getMilliseconds()); // 0
Run Code Online (Sandbox Code Playgroud)

  • 由于这是(一年后)第一个为日期添加毫秒的项目,因此setMilliseconds不起作用的原因是它设置了日期对象的毫秒部分.因此,在正常操作中,它期望从0到1999的数字.但是,它允许任何数字,就像将值添加到日期而没有日期的前一毫秒组件. (4认同)

Min*_*God 8

试试这个:

var dateObj = new Date(Date.now() + 86400000 * 3);

  • 将毫秒表示为`1000 * 60 * 60 * 24 * 3` imo会更清楚 (2认同)

小智 6

Date如果您想对更任意的对象(除了)执行此操作.now(),您可以使用类似以下内容的内容:

const initialDate = new Date("March 20, 2021 19:00");

const millisecondsToAdd = 30 * 24 * 60 * 60 * 1000; //30 days in milliseconds

const expiryDate = new Date(initialDate.valueOf() + millisecondsToAdd);
Run Code Online (Sandbox Code Playgroud)


Nic*_*zyk 5

如果您需要使用javascript进行日期计算,请使用moment.js

moment().add('days', 3).calendar();
Run Code Online (Sandbox Code Playgroud)

  • 对您没有冒犯,但是建议使用整个库来执行这样一个简单的任务似乎比完成它要困难得多。 (10认同)
  • 没冒犯,当其他人阅读我的代码时,他可能会比公认的答案更好地了解一下moment.js。 (8认同)
  • 这个任务没有什么“简单”的。考虑夏令时更改。 (6认同)
  • 进一步阅读:[程序员相信时间的谎言](http://infiniteundo.com/post/25326999628/falsehoods-programmers-believe-about-time) (2认同)

Kas*_*sma 5

使用此代码

var dateObj = new Date(); 
var val = dateObj.getTime(); 
//86400 * 1000 * 3  Each day is 86400 seconds 
var  days = 259200000; 

val = val + days; 
dateObj = new Date(val); // ********important*********//
val = dateObj.getMonth() + 1 + "/" + dateObj.getDate() + "/" + dateObj.getFullYear(); 
alert(val);
Run Code Online (Sandbox Code Playgroud)