如何将 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 天添加到当前日期?的主要内容,如果未能解决你的问题,请参考以下文章
Iphone:如何将年份添加到当前日期并将其作为字符串返回,格式为 2011-11-20