【问题标题】:Get Date ISO String without timezone subtraction获取没有时区减法的日期 ISO 字符串
【发布时间】:2021-02-10 22:57:34
【问题描述】:

我正在尝试获取没有时区加/减的日期字符串。 今天在我的操作系统中设置一个GMT+13的时区,创建一个新的Date()对象,然后获取这个Date的toISOString(),就会减去一天。

所以,今天是 11/02,如果我将操作系统时间设置为 GMT +13 并执行以下操作:

let dateExample = new Date()
dateExample.toISOString() // this returns 2021-02-10T22:50:33.171Z

我需要一个正确日期(2021-02-11)的 yyyy-mm-dd 字符串。我怎样才能拥有它?

谢谢。

【问题讨论】:

  • 这还不清楚,您想仅使用 yyyy-mm-dd 值获取您的本地日期时间吗?或格林威治标准时间为零的通用日期时间?
  • 没有减去一天,toISOString 返回 UTC 值,因此您看到的是 UTC 日期,而不是本地日期。 QnD:new Date().toLocaleDateString('en-CA') 但要注意 toLocale* 方法在浏览器之间不一定一致。

标签: javascript date


【解决方案1】:

你可以自己构建这个字符串:

const d = new Date();

const s = d.getFullYear().toString().padStart(4, '0')
          + '-' + (d.getMonth() + 1).toString().padStart(2, '0')
          + '-' + d.getDate().toString().padStart(2, '0');

console.log(s);

不要忘记给月份加 1,因为getMonth 返回月份 0-11,而不是 1-12。

【讨论】:

  • 'cos formatting dates 之前没有被报道过…… ;-)
  • 确实如此。但是,就像 Stack Overflow 上的许多其他主题一样,有时寻找一个具有良好接受答案的完全相同的问题比再次编写答案需要更长的时间。 ;-)(请随意关闭。)
  • 我完全同意,很高兴看到一个简洁、高质量的答案。有时在标记重复时,我也会直接链接到一个好的答案,但时间和精力可能相当可观。
猜你喜欢
  • 2017-09-25
  • 2017-09-17
  • 2020-04-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-02
  • 2023-03-22
  • 2014-05-09
相关资源
最近更新 更多