如何使用javascript添加周数?

时间:2012-07-05 12:02:42

标签: javascript date-format

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;

}

8 个答案:

答案 0 :(得分:64)

你可以这样做:

var now = new Date();
now.setDate(now.getDate()+14);
alert(now);

你可以看到小提琴here

根据documentation in MDN

  

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);