Javascript肯定不是我最强的观点。我现在已经尝试了几个小时,似乎陷入了某处的日期格式化。
我有一个表单,用户选择了一个日期(年/月/日),然后这个日期将被采用,并且将添加2周,然后日期将被复制到另一个表单字段。
我下面的最新尝试甚至没有添加日期,只是将一个表单字段中的选定日期复制到另一个表单字段,如果我选择'03 / 02/2012',则输出'Fri Mar 02 2012 00:00:00 GMT + 0000(GMT标准时间)',因此以美国格式输出以及完整日期。如何让它以相同的格式输出并添加2周?
function LicenceToOccupy(acceptCompletionDate)
{
var date1 = new Date(acceptCompletionDate);
document.frmAccept.acceptLicence.value = date1;
}
答案 0 :(得分:64)
你可以这样做:
var now = new Date();
now.setDate(now.getDate()+14);
alert(now);
你可以看到小提琴here。
setDate()方法设置指定日期的月中某天 根据当地时间。
答案 1 :(得分:4)
您将date1
指定为Date对象,表示您传递的字符串。您在acceptLicense
值中看到的是日期对象的toString()
表示形式(请尝试alert(date1.toString())
查看此内容)。
要根据需要输出,您必须使用字符串连接和various Date
methods。
var formattedDate = date1.getDate() + '/' + (date1.getMonth() + 1) + '/' + date1.getFullYear();
就增加2周而言,您应该在当前日期添加14天;
date1.setDate(date.getDate() + 14);
...这将自动处理月增加等。
最后,你最终会得到;
var date1 = new Date(acceptCompletionDate);
date1.setDate(date1.getDate() + 14);
document.frmAccept.acceptLicence.value = date1.getDate() + '/' + (date1.getMonth() + 1) + '/' + date1.getFullYear();
N.B JavaScript中的月份为0索引(Jan = 0,Dec = 11),因此月份为+1
。
编辑:要解决您的评论,您应该构建date
,如下所示,因为Date
参数应该是“表示RFC2822或ISO 8601的字符串日期。” (see here)。
var segments = acceptCompletionDate.split("/");
var date1 = new Date(segments[2], segments[1], segments[0]);
答案 2 :(得分:3)
这可能无法回答问题本身,但是可以使用这些公式找到解决方案。
6.04e+8
= 1周(以毫秒为单位)
Date.now()
=现在(以毫秒为单位)
Date.now() + 6.04e+8
=从今天开始1周
Date.now() + (6.04e+8 * 2)
=从今天开始2周
new Date( Date.now() + (6.04e+8 * 2) )
=日期对象从今天起2周
答案 3 :(得分:1)
nohup: ignoring input and appending output to 'nohup.out'
PyTorch is fine!
这里7是要在日期中添加的天
答案 4 :(得分:0)
这应该做你想要的。
function LicenceToOccupy(acceptCompletionDate)
{
var date1 = new Date(acceptCompletionDate);
date1.setDate(date1.getDate() + 14);
document.frmAccept.acceptLicence.value = date1.getDate() + '/' + (date1.getMonth() + 1) + '/' + date1.getFullYear();
}
答案 5 :(得分:0)
要解析特定的dd/mm/yyyy
格式并使用14增加天数,您可以执行诸如拆分零件之类的操作,并使用明确指定的y / m / d创建日期对象。 (立即增加日期)提供分隔符始终为-
,以下内容应该有效:
function LicenceToOccupy(acceptCompletionDate)
{
var parts = acceptCompletionDate.split("/");
var date1 = new Date(parts[2], (parts[1] - 1), parseInt(parts[0]) + 14); //month 0 based, day: parse to int and increment 14 (2 weeks)
document.frmAccept.acceptLicence.value = date1.toLocaleDateString(); //if the d/m/y format is the local string, otherwise some cusom formatting needs to be done
}
答案 6 :(得分:0)
只需对Toast的答案进行一些最低限度的修改,您就可以获得正在寻找的确切格式 dd / mm / yyyy :
function LicenceToOccupy(acceptCompletionDate)
{
var date1 = new Date(acceptCompletionDate);
date1.setDate(date1.getDate() + 14); //This adds the two weeks
var day = date1.getDate() 9 10 ? date1.getDate() : '0' + date1.getDate();
var month = date1.getMonth() >= 9 ? date1.getMonth() + 1: '0' + date1.getMonth();
document.frmAccept.acceptLicence.value = day + '/' + month + '/' + date1.getFullYear();
}
答案 7 :(得分:-1)
一切都是there!
date1.toLocaleDateString()
这将在客户约定中将date1作为String返回
创建一个2周以上的新日期date2(2周= 2 * 7 * 24 * 60 * 60秒):
var date2 = new Date(date1 + 60*60*24*7*2);