let date = new Date('2020-04');
let month = date.getMonth() + 1;
Run Code Online (Sandbox Code Playgroud)
这给了我 3 月而不是 4 月,休息了 1 个月,为什么呢?
如果我使用:
let date = new Date('2020-04');
month = date.getUTCMonth() + 1;
Run Code Online (Sandbox Code Playgroud)
然后我得到了正确的答案。我在加利福尼亚州。无论用户身在何处,我都需要正确的答案。即我需要四月作为正确答案。
这将创建一个 UTC 日期:
let date = new Date('2020-04');
// 2020-04-01T00:00:00.000Z
Run Code Online (Sandbox Code Playgroud)
请注意00.000Z“UTC”或“无偏移”的含义。
这会得到您当地时区的时间:
let month = date.getMonth() + 1;
Run Code Online (Sandbox Code Playgroud)
如果您位于 GMT 线以西,您会得到一个稍低的值,即该日期之前 X 小时,但如果您位于东边,那就没问题了。
您的 UTC 解决方案是正确的,因为您需要 UTC 日期中的 UTC 月份。另一种方法是指定一个包含时区的时间,如下所示:
let date = new Date('2020-04-01:00:00:00-0700');
// 2020-04-01T07:00:00.000Z
Run Code Online (Sandbox Code Playgroud)
您可以看到 UTC 偏移量现在显示为 07:00,而不是 00:00。getMonth()现在返回3。
| 归档时间: |
|
| 查看次数: |
100 次 |
| 最近记录: |