Date 如何向来自日期表单字段的日期添加几个月?
使用DateJS,您可以在当前日期的基础上添加六个月,如下所示:Date 如何向来自日期表单字段的日期添加几个月?,date,field,add,datejs,Date,Field,Add,Datejs,使用DateJS,您可以在当前日期的基础上添加六个月,如下所示: Date.today().addMonths(6); Date.parse(this.getField('begin_date').value).addMonths(24) 但是,我需要将24个月添加到用户在日期字段中键入的日期,而不是今天的日期。因此,原则上应该将today()替换为类似this.getField('begin\u date').value的内容 结果应写入另一个数据表单字段 我努力了,但没能成功。有人能帮我
Date.today().addMonths(6);
Date.parse(this.getField('begin_date').value).addMonths(24)
但是,我需要将24个月添加到用户在日期字段中键入的日期,而不是今天的日期。因此,原则上应该将today()
替换为类似this.getField('begin\u date').value的内容
结果应写入另一个数据表单字段
我努力了,但没能成功。有人能帮我吗?如果输入值是日期的文本表示,首先需要将其转换为日期
对象。然后你可以随心所欲地使用它
DateJS有一个非常智能的函数,它可以做到这一点,所以您可以这样实现它:
Date.today().addMonths(6);
Date.parse(this.getField('begin_date').value).addMonths(24)
当需要特定的日期格式时,如欧洲常用的DD.MM.YYYY
,可以使用并指定格式。像这样:
Date.parseExact(dateToParse, 'dd.MM.yyyy') // leading zeroes required; parses 01.04.2014 but not 1.4.2014
Date.parseExact(dateToParse, 'd.M.yyyy') // leading zeroes not required; parses both 01.04.2014 and 1.4.2014
以下是我为我的问题找到的解决方案,同时使用DateJS:
start = this.getField('begin_date').value;
var d1 = util.scand("dd.mm.yyyy", start);
var myDate = new Date(d1);
result = myDate.addMonths(24);
除了2014年2月28日、2018年2月28日和2022年2月28日之外,这项工作非常顺利,也跨越了闰年;结果将是2016/2020/2024年2月28日。。。而不是2016/2020/2024年2月29日。。。在这种情况下,由用户决定是否接受28日或手动将日期更改为29日。谢谢!原则上,它可以正常工作,但是parse()函数混淆了我的日期和月份。我的日期字段格式为“dd.mm.yyyy”,因此2014年4月1日表示“2014年4月1日”。然而,parse()函数将其转换为“2014年1月4日”。我有机会纠正吗?我试过:var begin=this.getField('begin\u date').value代码>end=Date.parseExact(开始于'dd.MM.yyyy')代码>但结果是“null”。仅当我输入例如:end=Date.parseExact('01.02.2015','dd.MM.yyyy')代码>然后我将得到所需的结果。为了让Date.parse()正确安排我的日期和月份,我还能做些什么?你确定begin
的值实际上是一个有效的日期吗?至少看起来是这样;app.alert向我显示例如1.10.2005
作为begin
的值(无小时、分、秒等),表示2015年10月1日。但是end
的值仍然显示为null
。还有别的办法吗?实际的问题似乎是Date.parse()
假设month
位于Date
之前。我是否需要从“开始日期”字段中创建自己的日期对象?谢谢我们现在有点偏离了原来的问题;但是,请再次查看我的更新。我建议彻底研究DateJS的文档。