Har*_*San 1 javascript date dayofweek timezone-offset
我试图在 JavaScript 中找到最好的方法,在仅给定日期字符串的情况下,获取任何时区中特定日期的星期几。
具体来说,如果我有一个日期字符串,例如:
2022-01-29
Run Code Online (Sandbox Code Playgroud)
我用该字符串在 JS 中创建一个新的 Date 对象,然后调用getDayDate 对象上的方法,因为我位于“America/New_York”时区,所以我实际上获得了前一天的星期几日期,而不是日期本身的星期几。
对于处于负 UTC 时间的时区(例如美国、加拿大等)的任何人来说,可以通过运行以下命令轻松地演示这一点:
new Date('2022-01-29').getDay()
Run Code Online (Sandbox Code Playgroud)
应该6在周六返回,但由于时区转换,我得到5了周五。
我发现“/sf/answers/2744688971/”,建议使用getTimezoneOffset以下方法:
var date = new Date('2016-08-25T00:00:00')
var userTimezoneOffset = date.getTimezoneOffset() * 60000;
new Date(date.getTime() - userTimezoneOffset);
Run Code Online (Sandbox Code Playgroud)
这似乎确实有效,但有几点:
- userTimezoneOffset在最后使用,但它只适用于我+ userTimezoneOffset。为什么?当我只有日期字符串时,在 JavaScript 中获取星期几的最佳方法是什么?
使用
new Date('2022-01-29').getUTCDay()
Run Code Online (Sandbox Code Playgroud)
new Date('2022-01-29')将创建一个具有 UTC (Greenwhich) 日期“2022-01-29”和时间“00:00h”的 Date 对象。当使用浏览器获取工作日时,会根据您当地的.getDay()时区进行计算。通过使用,您可以获得 UTC 时区的工作日。.getUTCDay()
@RayHatfield 提出的有趣观点
new Date('2022-01-29').getUTCDay()
Run Code Online (Sandbox Code Playgroud)
有关日期字符串的详细信息,请参阅https://en.m.wikipedia.org/wiki/ISO_8601 。