如果我尝试提取 11 月的第一天数字,效果很好:
var d = new Date(2013, 10, 1); // 1st of November 2013
d.toISOString(); // 2013-11-01T00:00:00.000Z (November)
d.getDay(); // 5 (Correct, 1st of November = Friday = 5)
Run Code Online (Sandbox Code Playgroud)
然而,由于英国的夏令时(时钟在 10 月底前进一小时),如果我尝试拉出 10 月的第一天,日期最终会设置为前一天的 23:00:
var d = new Date(2013, 9, 1); // 1st of October 2013
d.toISOString(); // 2013-09-30T23:00:00.000Z (September)
d.getDay(); // 2 (Last day number of September)
Run Code Online (Sandbox Code Playgroud)
我该如何处理这个问题,以便无论夏令时如何(以及用户身在何处的任何其他时钟调整),我总是在每月 1 日得到 00:00:00?
你是在寻找getDay方法,而不是为了getDate。这两种方法始终适用于当地时间,无论时区和夏令时如何。
然而,.toISOString事实并非如此。它以 UTC 格式显示时间,并导致您感到困惑。使用该.toString函数也可以输出当地时间。
> new Date(2013, 9, 1).toISOString()
"2013-09-30T22:00:00.000Z" // my timezone's midnight in UTC
> new Date(2013, 9, 1).toString()
"Tue Oct 01 2013 00:00:00 GMT+0200" // midnight, with offset
> new Date(2013, 9, 1).getDate()
1 // the *first* day of October
> new Date(2013, 9, 1).getDay()
2 // is a Tuesday
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1346 次 |
| 最近记录: |