如何将 1 天添加到当前日期?

Posted

技术标签:

【中文标题】如何将 1 天添加到当前日期?【英文标题】:How can I add 1 day to current date? 【发布时间】:2012-04-16 21:04:16 【问题描述】:

我有一个当前的 Date 对象,它需要使用 javascript Date 对象增加一天。我有以下代码:

var ds = stringFormat("day date month year",  
    day: companyname.i18n.translate("day", language)[date.getUTCDay()], 
    date: date.getUTCDate(), 
    month: companyname.i18n.translate("month", language)[date.getUTCMonth()], 
    year: date.getUTCFullYear() 
);

我怎样才能增加一天?

我已向 getUTCDay()getUTCDate() 添加了 +1,但它没有显示“星期日” 对于day,我希望这会发生。

【问题讨论】:

“加+1”是什么意思?你需要第二天还是别的什么? date: (date.getUTCDate()+1) 不起作用(对我有用)吗?可能与date 存在命名冲突(作为 Date()-Object 作为 Object-Key。您是否尝试过以不同的方式调用 Date()-Object? 目前仅显示为: ,没有“2012 年 4 月 7 日星期日” 所以这不是您需要的7 Apr(对我来说“添加第二天”是什么),而是Sunday。请记住在day:date: 中都添加+1(或者,如当前答案所述,之前)。 【参考方案1】:

向日期对象添加一天:

var date = new Date();

// add a day
date.setDate(date.getDate() + 1);

【讨论】:

查看重复的问题:***.com/questions/3674539/…。这个答案很好,但不考虑夏令时。一年中有 2 天不是 24 小时。 @Jess — 这取决于您希望如何表示 DST 的更改。问题询问如何在日期中添加一个,这正是上述答案的作用。添加 24 小时并不一定会增加该日期,使用 setDate 将本地日期添加 1 总是如此。 当然不是!您从 UTC 时间开始,然后基本上将其转换为本地时间,添加一天,然后将其转换回 UTC。因此,local 日期增加了一天,但 UTC 时间只有 23 小时。如果您在 UTC 日期上加 1,您将返回当地时间 01:00:00。这种行为并不是夏令时独有的,它是使用三个不同时区的结果。 啊哈。我没有意识到 getDate 正在从 UTC 转换为本地时间。 a.setUTCDate(a.getUTCDate() + 1); @Jess 我知道我迟到了,但是您对使用get/setUTCDate() 的评论本身就应该是一个答案(如果是的话,也应该得到高度评价)。 【参考方案2】:

以我的拙见,最好的方法是以毫秒为单位添加一整天,这取决于您如何考虑代码,如果您在每月的最后一天,它可能会搞砸。

例如 2 月 28 日或 3 月 31 日。

这是我如何做的一个例子:

var current = new Date(); //'Mar 11 2015' current.getTime() = 1426060964567
var followingDay = new Date(current.getTime() + 86400000); // + 1 day in ms
followingDay.toLocaleDateString();

恕我直言,这确保了准确性

这是另一个例子。我不喜欢那个。它可以为您工作,但不如上面的示例那么干净。

var today = new Date('12/31/2015');
var tomorrow = new Date(today);
tomorrow.setDate(today.getDate()+1);
tomorrow.toLocaleDateString();

恕我直言this === 'POOP'

因此,由于夏令时,你们中的一些人对我的毫秒方法感到不满。所以我要抨击这一点。首先,一些国家和州没有夏令时。第二 正好加上 24 小时是一整天。如果日期编号每年不更改一次,但在 6 个月后得到修复,我认为那里没有问题。但是为了明确并不得不处理分配邪恶Date()的目的,我已经考虑过了,现在彻底讨厌Date。所以这是我的新方法。

var dd = new Date(); // or any date and time you care about 
var dateArray =  dd.toISOString().split('T')[0].split('-').concat( dd.toISOString().split('T')[1].split(':') );
// ["2016", "07", "04", "00", "17", "58.849Z"] at Z 

现在是有趣的部分!

var date =  
    day: dateArray[2],
    month: dateArray[1],
    year: dateArray[0],
    hour: dateArray[3],
    minutes: dateArray[4],
    seconds:dateArray[5].split('.')[0],
    milliseconds: dateArray[5].split('.')[1].replace('Z','')

现在我们的官方有效国际日期对象清楚地写在祖鲁子午线上。 现在更改日期

dd.setDate(dd.getDate()+1); // this gives you one full calendar date forward
tomorrow.setDate(dd.getTime() + 86400000);// this gives your 24 hours into the future. do what you want with it.

【讨论】:

添加秒/毫秒不适用于夏令时。 @Matt H 你是从哪里得到这个想法的。从 1970/01/01 开始,时间以 UTC 为单位设置,以毫秒为单位 UTC 时间是第二天,是的,但不一定是当地时间。在美国的 Spring Forward 日,一天有 25 个小时。所以如果你有例如2015 年 3 月 31 日 00:00 时,加上 86400000 毫秒,在 Sprint Forward 日,由于当天有 25 小时,当地时间将为 2015 年 3 月 31 日 23:00 时。 可以看到这样的效果:var dte = Date.parse('2015-11-01'); console.log(dte); dte.setTime(dte.getTime() + 86400000 ); console.log(dte); 这是过度设计的。如果您遇到此类问题,请使用诸如 moment 之类的库或其他工具来帮助您简化操作。【参考方案3】:
int days = 1;
var newDate = new Date(Date.now() + days*24*60*60*1000);

CodePen

var days = 2;
var newDate = new Date(Date.now()+days*24*60*60*1000);

document.write('Today: <em>');
document.write(new Date());
document.write('</em><br/> New: <strong>');
document.write(newDate);

【讨论】:

添加一天毫秒失败,因为在遵守夏令时的地方并非所有天都是 24 小时。例如。智利于 2017 年 5 月 14 日午夜结束夏令时。时钟将从午夜倒回至 23:00。因此,将 24 小时添加到 2017-05-13 00:00:00 将产生 2017-05-13 23:00:00,并且日期不会更改(某些浏览器会在午夜执行,其他浏览器会在一毫秒后执行) . :-(【参考方案4】:

受this question 中的jpmottin 启发,这是一行代码:

var dateStr = '2019-01-01';
var days = 1;

var result = new Date(new Date(dateStr).setDate(new Date(dateStr).getDate() + days));

document.write('Date: ', result); // Wed Jan 02 2019 09:00:00 GMT+0900 (Japan Standard Time)
document.write('<br />');
document.write('Trimmed Date: ', result.toISOString().substr(0, 10)); // 2019-01-02

希望对你有帮助

【讨论】:

【参考方案5】:

如果您想在当前日期时间中添加一天(24 小时),您可以像这样添加毫秒:

new Date(Date.now() + ( 3600 * 1000 * 24))

【讨论】:

【参考方案6】:
currentDay = '2019-12-06';
currentDay = new Date(currentDay).add(Date.DAY, +1).format('Y-m-d');

【讨论】:

这是什么?你在使用图书馆吗?【参考方案7】:

您可以使用此函数在 javascript 中将给定日期添加到当前日期。

function addDayToCurrentDate(days)
  let currentDate = new Date()
  return new Date(currentDate.setDate(currentDate.getDate() + days))


// current date = Sun Oct 02 2021 13:07:46 GMT+0200 (South Africa Standard Time)
// days = 2

console.log(addDayToCurrentDate(2))
// Mon Oct 04 2021 13:08:18 GMT+0200 (South Africa Standard Time)

【讨论】:

【参考方案8】:

// Function gets date and count days to add to passed date
function addDays(dateTime, count_days = 0)
  return new Date(new Date(dateTime).setDate(dateTime.getDate() + count_days));


// Create some date
const today = new Date("2022-02-19T00:00:00Z");

// Add some days to date
const tomorrow = addDays(today, 1);

// Result
console.log("Tomorrow => ", new Date(tomorrow).toISOString());
// 2022-02-20T00:00:00.000Z

【讨论】:

以上是关于如何将 1 天添加到当前日期?的主要内容,如果未能解决你的问题,请参考以下文章

如何在codeigniter的当前日期插入天间隔?

Excel 如何获取当前的时间,只要时间,不要日期

Iphone:如何将年份添加到当前日期并将其作为字符串返回,格式为 2011-11-20

Jquery应该怎么给当前日期添加天数

Libreoffice calc 宏将当前日期 + 14 天放入单元格

如何获得当前日期前 30 天?