Vah*_*idN 46 javascript getdate
以下脚本返回20而不是21!
var d = new Date("2010/03/21");
document.write(d.getDate());
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?这是一个JavaScript错误吗?
CMS*_*CMS 51
该Date.parse
方法依赖new Date(string)
于实现(相当于Date.parse(string)
).
虽然此格式可在现代浏览器上使用,但您无法100%确定浏览器将完全解释您所需的格式.
我建议你操纵你的字符串,并使用Date构造函数与年,月和日参数:
// parse a date in yyyy-mm-dd format
function parseDate(input) {
var parts = input.match(/(\d+)/g);
// new Date(year, month [, date [, hours[, minutes[, seconds[, ms]]]]])
return new Date(parts[0], parts[1]-1, parts[2]); // months are 0-based
}
Run Code Online (Sandbox Code Playgroud)
Pau*_*aum 30
这是夏令时问题,因为Date()使用当地时间.
我住在巴西,10月21日至2012年是我国大部分地区夏令时的开始,因此巴西不存在2012年10月21日0:0和1:0之间的当地日期!
有些人在这里评论说它有效.这是因为正确或错误的小时返回取决于本地用户所在国家/地区.
请参阅:http://www.timeanddate.com/news/time/brazil-dst-2012.html
在巴西,2012年Java认为DST从10月14日开始(实际上是在1周后开始)
var dt = new Date(2012,9,14);
alert(dt.getHours());
Run Code Online (Sandbox Code Playgroud)
产生1和
请参阅:http://www.timeanddate.com/time/dst/2013.html
解决方案是使用UTC(协调世界时)时间,因为没有夏令时更改并且您使用一种抽象时间.在大多数实际应用中没有问题.
var dt = new Date( Date.UTC(2012, 9, 21, 8, 5, 12));
alert( (dt.getUTCMonth()+1) + '/' + dt.getUTCDate() + '/' +
dt.getUTCFullYear() + " " + dt.getUTCHours()+ ':' +
dt.getUTCMinutes() + ':' + dt.getUTCSeconds() );
Run Code Online (Sandbox Code Playgroud)
如果有人不使用小时,分钟和秒钟,只需将虚拟小时值设置为大于或等于1,就会更容易,如上所示.
小智 9
时区在这里起着重要作用。该Date()
函数会将您的时区添加到您作为输入提供的日期中。例如:我给出了这样的输入:
alert(new Date("2018-09-15"));
Run Code Online (Sandbox Code Playgroud)
我的结果是:
2018 年 9 月 15 日星期六 05:30:00 GMT+0530(印度标准时间)
时区+05:30
被添加到我输入的时间(你可以在上面的结果中看到..05:30:00 被添加到日期。现在我要说的是如果你在时区小于 0 [国家如巴西、墨西哥、智利等......时区小于 0] 然后它将添加到您的日期输入中(例如:时区是 UTC?05:00。它将从给定的日期中减去 -5:00。
VahidN,您得到结果20
是因为您所在的时区小于 0(-1è :
00` 等...)
解决方案是将您的时区重置为 0。像这样:
Date("2010-03-21T00:00:00").
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
70153 次 |
最近记录: |