在 javascript 中添加一天到现在

2022-08-30 05:40:41

我相信很多人问了这个问题,但是当我检查答案时,在我看来,他们错了,我发现了什么

var startDate = new Date(Date.parse(startdate));
//The start date is right lets say it is 'Mon Jun 30 2014 00:00:00'

var endDate = new Date(startDate.getDate() + 1);
// the enddate in the console will be 'Wed Dec 31 1969 18:00:00' and that's wrong it should be  1 july 

我知道从1-31返回,但是浏览器或javascript是否只在不更新月份和年份的情况下增加一天?.getDate()

在这种情况下,我应该写一个算法来处理这个问题吗?还是有另一种方式?


答案 1

请注意,仅返回月份中的某一天。您可以通过呼叫并附加 1 来添加一天。Date.getDateDate.setDate

// Create new Date instance
var date = new Date()

// Add a day
date.setDate(date.getDate() + 1)

JavaScript 会自动为您更新月份和年份。

编辑:
这是一个指向页面的链接,您可以在其中找到有关内置Date对象的所有很酷的东西,并查看可能的内容:Date


答案 2

采用单个数字的构造函数预计自 1969 年 12 月 31 日以来的毫秒数。Date

Date.getDate()返回当前日期对象的日期索引。在您的示例中,日期为 。最后一个表达式是 ,因此它在 1969 年 12 月 31 日之后返回 31 毫秒。3031

使用现有方法的一个简单解决方案是改用。然后,添加一天值毫秒而不是 。Date.getTime()1

例如

var dateString = 'Mon Jun 30 2014 00:00:00';

var startDate = new Date(dateString);

// seconds * minutes * hours * milliseconds = 1 day 
var day = 60 * 60 * 24 * 1000;

var endDate = new Date(startDate.getTime() + day);

JSFiddle

请注意,此解决方案不处理与夏令时、闰年等相关的边缘情况。它总是一种更具成本效益的方法,相反,使用成熟的开源库,如moment.js来处理一切。