Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Date 如何向来自日期表单字段的日期添加几个月?_Date_Field_Add_Datejs - Fatal编程技术网

Date 如何向来自日期表单字段的日期添加几个月?

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的内容 结果应写入另一个数据表单字段 我努力了,但没能成功。有人能帮我

使用DateJS,您可以在当前日期的基础上添加六个月,如下所示:

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的文档。