JavaScript的绝对不是我的最强点。 我一直在尝试此的一对夫妇现在小时,似乎陷入与日期格式的某处。
我有其中用户选择的日期(日/月/年),然后这个日期将被带到周和2周将被添加到它,然后日期将被复制到另一种形式字段的形式。
我的最新尝试以下甚至不添加日期还只是在复制一个表单字段到另一个选定的日期,如果我选择'03 / 02 / 2012' ,它输出“周五2012年3月2日00:00:00 GMT + 0000 (GMT标准时间)”,所以其在美国的格式输出,以及完整的日期。 如何我得到它出来放在同一格式,并加入2星期?
function LicenceToOccupy(acceptCompletionDate)
{
var date1 = new Date(acceptCompletionDate);
document.frmAccept.acceptLicence.value = date1;
}
你可以这样做 :
var now = new Date();
now.setDate(now.getDate()+14);
alert(now);
你可以看到小提琴这里 。
按照在MDN文档
所述的setDate()方法按照本地时间设置月份中的日期在指定的日期。
你分配date1
是一个Date对象代表传递给它的字符串。 你看到的在acceptLicense
值是toString()
日期对象的表示(尝试alert(date1.toString())
看到这一点)。
为了你想要的输出,你将不得不使用字符串连接和各种Date
的方法 。
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();
在JavaScript NB月份是0索引(一月= 0,DEC = 11),因此+1
上的月份。
编辑 :为了解决您的意见,您应该构建date
作为代替如下,随着Date
的说法应该是“代表RFC2822或ISO 8601日期的字符串。” ( 见这里 )。
var segments = acceptCompletionDate.split("/");
var date1 = new Date(segments[2], segments[1], segments[0]);
这可能不是回答这个问题本身,而是一个可以找到这些公式的解决方案。
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) )
= Date对象从今天2周
这应该做你要找的东西。
function LicenceToOccupy(acceptCompletionDate)
{
var date1 = new Date(acceptCompletionDate);
date1.setDate(date1.getDate() + 14);
document.frmAccept.acceptLicence.value = date1.getDate() + '/' + (date1.getMonth() + 1) + '/' + date1.getFullYear();
}
为了解析特定dd/mm/yyyy
14格式和增量日子里,你可以不喜欢拆分的部件,并创建具有Y /米日期对象/ D给出specfically。 (递增天马上)提供了分隔符始终-
下面应该工作:
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
}
只是一些最低限度的修改来敬酒的答案,你会得到你正在寻找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();
}
一切都没有 !
date1.toLocaleDateString()
Thiswill回报你日期1作为客户约定的String
创建2周以上(2周= 2 * 7 * 24 * 60 * 60秒)的新日期DATE2:
var date2 = new Date(date1 + 60*60*24*7*2);