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)
你可以在这里看到小提琴.
setDate()方法根据本地时间设置指定日期的月中某天.
这可能无法回答问题本身,但是可以使用这些公式找到解决方案。
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周
您将分配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)
| 归档时间: |
|
| 查看次数: |
43983 次 |
| 最近记录: |