47
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);

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

这种方法行不通,我要数月数天了。有什么建议么?

4

5 回答 5

74

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

// get the current date & time (as milliseconds since Epoch)
const currentTimeAsMs = 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
const adjustedTimeAsMs = currentTimeAsMs + (1000 * 60 * 60 * 24 * 3);

// create a new Date object, using the adjusted time
const adjustedDateObj = new Date(adjustedTimeAsMs);

进一步解释这一点;原因dataObj.setMilliseconds()不起作用是因为它将 dateobj 的毫秒属性设置为指定值(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

参考:
Date.now()
new Date()
Date.setMilliseconds()

于 2012-10-09T08:24:44.410 回答
19

尝试这个:

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

JavaScript 中的日期精确到毫秒,10001 秒也是如此。
一分钟有60秒,一小时有60分钟,一天有24小时。

因此,一天是:1000 * 60 * 60 * 24,即86400000毫秒。

Date.now()返回当前时间戳,精确到毫秒。
我们将该时间戳以及添加的 3 天毫秒数传递给new Date(),当使用数字调用时,它会Date根据提供的时间戳创建一个对象。

于 2012-10-09T08:25:28.450 回答
9

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

moment().add(3, 'days').calendar();
于 2012-10-09T08:24:17.917 回答
6

使用此代码

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);
于 2012-10-09T08:26:27.257 回答
2

如果您想对更任意的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);
于 2021-03-20T19:30:00.957 回答