momentJS 日期字符串添加 5 天

Posted

技术标签:

【中文标题】momentJS 日期字符串添加 5 天【英文标题】:momentJS date string add 5 days 【发布时间】:2014-04-28 03:12:46 【问题描述】:

我有一个开始日期字符串“20.03.2014”,我想使用 moment.js 将其添加 5 天,但我没有在警报窗口中获得新日期“25.03.2014”。

这里是我的 javascript 代码:

startdate = "20.03.2014";
var new_date = moment(startdate, "DD-MM-YYYY").add("DD-MM-YYYY", 5);

alert(new_date);

这里是我的 jsfiddle:http://jsfiddle.net/jbgUt/1/

我该如何解决这个问题?

我喜欢这种字符串格式“25.03.2014”

希望有人可以帮助我。

【问题讨论】:

【参考方案1】:

如果我们要使用当前日期或当前日期:

var new_date = moment(moment(), "MM-DD-YYYY").add(7, 'days')
alert(new_date);

【讨论】:

【参考方案2】:

如果在向函数添加 X 时间后运行时出现格式问题,请尝试以下格式:

startDate = moment(startDate).add(1, "days").format("YYYY-MM-DD");

代替:

startDate = moment(startDate, "YYYY-MM-DD").add(1, "days");

最后一个版本将时间附加到返回的数据中,而 format 方法则没有,而是直接返回 YYYY-MM-DD。

【讨论】:

【参考方案3】:
moment(moment('2015/04/09 16:00:00').add(7, 'd').format('YYYY/MM/DD HH:mm:ss'))

必须格式化,然后再转换为时刻。

【讨论】:

你为我节省了很多时间:)【参考方案4】:

更新:

startdate = "20.03.2014";
var new_date = moment(startdate, "DD-MM-YYYY").add(5,'days');

alert(new_date)

【讨论】:

【参考方案5】:
var end_date = moment(start_date).clone().add(5, 'days');

【讨论】:

clone() 在这里真正有帮助 感谢您拯救了我的一天! clone() 非常重要,因为 add() 会像 doc 所说的那样改变原始时刻。【参考方案6】:

更新日期:2016 年 1 月 19 日

截至 2.8.4 时刻 - 使用 .add(5, 'd')(或 .add(5, 'days'))而不是 .add('d', 5)

var new_date = moment(startdate, "DD-MM-YYYY").add(5, 'days');

感谢@Bala 提供的信息。

更新日期:2014 年 3 月 21 日

这是获得该格式所必须做的。

Here's an updated fiddle

startdate = "20.03.2014";
var new_date = moment(startdate, "DD-MM-YYYY").add('days', 5);

var day = new_date.format('DD');
var month = new_date.format('MM');
var year = new_date.format('YYYY');

alert(day + '.' + month + '.' + year);

原文:2014 年 3 月 20 日

你没有告诉它如何/添加什么单位。使用 -

 var new_date = moment(startdate, "DD-MM-YYYY").add('days', 5);

【讨论】:

我想在警报窗口中看到这种格式“25.03.2014”我该如何实现呢? 从 moment-2.8.4 开始,我可以看到带有 add('days',5) 的已弃用消息。请改用 add(5,'days')。 正确的语法:moment().add(5, 'days').format("D/M/YYYY") 你可以看看这里:momentjs.com/docs/#/manipulating/add @Bala,如果只有一天可以添加,我们可以使用 add(1,'day') 吗? @Ashiq,根据文档,它应该是“天”或“d”。 (虽然 'day' 会以 d 开头,但不应该使用)【参考方案7】:
    将https://momentjs.com/downloads/moment-with-locales.js添加到您的html页面 var todayDate = moment().format('DD-MM-YYYY');//to get today date 06/03/2018 if you want to add extra day to your current date 那么 var dueDate = moment().add(15,'days').format('DD-MM-YYYY')// to add 15 days to current date..

第 2 点和第 3 点正在您的 jquery 代码中使用...

【讨论】:

【参考方案8】:

您可以添加不同格式的日期:

// Normal adding
moment().add(7, 'days');

// Short Hand
moment().add(7, 'd');

// Literal Object    
moment().add(days:7, months:1);

在 Moment.js 文档中查看更多信息:https://momentjs.com/docs/#/manipulating/add/

【讨论】:

【参考方案9】:

要获得一个实际的工作示例,它会返回预期的结果:

var startdate = "20.03.2014";
var new_date = moment(startdate, "DD.MM.YYYY");
var thing = new_date.add(5, 'days').format('DD/MM/YYYY');
window.console.log(thing)

【讨论】:

【参考方案10】:

你可以用几行代码减少他们所说的内容:

var nowPlusOneDay = moment().add('days', 1);
var nowPlusOneDayStr = nowPlusOneDay.format('YYYY-MM-DD');

alert('nowPlusOneDay Without Format(Unix Date):'+nowPlusOneDay);
alert('nowPlusOneDay Formatted(String):'+nowPlusOneDayStr);

【讨论】:

【参考方案11】:

函数 add() 返回旧日期,但更改原始日期:)

startdate = "20.03.2014";
var new_date = moment(startdate, "DD.MM.YYYY");
new_date.add(5, 'days');
alert(new_date);

【讨论】:

是的,这很奇怪。在控制台中检查moment(startdate).add(5, 'days') 时,您会得到Moment _isAMomentObject: true, _i: "[the original date]",,我确信add 方法不起作用。花了几分钟后,我意识到这个方法是有效的,因为如果你打开对象你会得到Moment _d : [The date with the addition] _f : "YYYY-MM-DDTHH:mm:ss" _i : [The original date]...日期实际上已经改变了(你会用moment(startdate).add(5, 'days').format('YYYYMMDD')得到正确的结果),但令人困惑的是日期似乎没有改变。 :-|

以上是关于momentJS 日期字符串添加 5 天的主要内容,如果未能解决你的问题,请参考以下文章

无法在momentjs中选择minDate

Js计算指定日期加上多少天,加多少月,加多少年的日期

momentjs获取上周上月前三个月的起始和结束时间--直接copy结尾代码

如何修改momentjs日历以在用户指定的日期开始几周?

markdown 与momentjs的日期(今天)

使用 moment.js 解析字符串到日期