如何使用javascript添加周数?

JBo*_*oom 25 javascript date-format

Javascript绝对不是我最强的观点.我现在已经尝试了几个小时,似乎陷入了某处的日期格式化.

我有一个表单,用户选择了一个日期(年/月/日),然后这个日期将被采用,并将添加2周,然后日期将被复制到另一个表单字段.

我下面的最新尝试甚至没有添加日期,只是将一个表单字段中的选定日期复制到另一个表单字段,如果我选择'03/02/2012',则输出'Fri Mar 02 2012 00:00:00 GMT + 0000 (格林威治标准时间标准时间)',所以它以美国格式输出以及完整日期.如何让它以相同的格式输出并添加2周?

function LicenceToOccupy(acceptCompletionDate)
{
    var date1 = new Date(acceptCompletionDate);
    document.frmAccept.acceptLicence.value = date1;

}
Run Code Online (Sandbox Code Playgroud)

Arv*_*ran 72

你可以这样做 :

let numWeeks = 2;
let now = new Date();
now.setDate(now.getDate() + numWeeks * 7);
alert(now);
Run Code Online (Sandbox Code Playgroud)

你可以在这里看到小提琴.

根据MDN文档

setDate()方法根据本地时间设置指定日期的月中某天.


Lui*_*uis 6

这可能无法回答问题本身,但是可以使用这些公式找到解决方案。

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周


Mat*_*att 5

您将分配date1一个Date对象,该对象代表您传递的字符串。您在acceptLicense值中看到的是toString()日期对象的表示形式(尝试alert(date1.toString())看一下)。

要根据需要输出,您必须使用字符串连接和各种Date方法

var formattedDate = date1.getDate() + '/' + (date1.getMonth() + 1) + '/' + date1.getFullYear();
Run Code Online (Sandbox Code Playgroud)

在增加2周方面,您应该在当前日期之前增加14天;

date1.setDate(date.getDate() + 14);
Run Code Online (Sandbox Code Playgroud)

...这将自动处理月份增加等。

最后,您将得到:

var date1 = new Date(acceptCompletionDate);
date1.setDate(date1.getDate() + 14);
document.frmAccept.acceptLicence.value = date1.getDate() + '/' + (date1.getMonth() + 1) + '/' + date1.getFullYear();
Run Code Online (Sandbox Code Playgroud)

NB在JavaScript中的月份是0索引的(Jan = 0,Dec = 11),因此 +1是月份。

编辑:要解决您的评论,您应该date改为构造如下,因为Date参数应为“代表RFC2822或ISO 8601日期的字符串”。(请参见此处)。

var segments = acceptCompletionDate.split("/");
var date1 = new Date(segments[2], segments[1], segments[0]);
Run Code Online (Sandbox Code Playgroud)