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 天的主要内容,如果未能解决你的问题,请参考以下文章