【问题标题】:How to convert a date string in one format to a string in another format (one with a timezone offset)?如何将一种格式的日期字符串转换为另一种格式的字符串(带有时区偏移的字符串)?
【发布时间】:2020-01-20 22:03:11
【问题描述】:

我有一个字符串格式的日期,例如2020-01-10。将其转换为这种格式的字符串的正确 vanilla JS 方法是什么——具有时间和时区偏移量的字符串,例如

2020-01-10T00:00-0500

在我的例子中,时间总是午夜,偏移量总是-0500。

我想我可以从我的字符串中创建一个新的日期对象开始,如下所示:

dateString = `2020-01-10`;
dateObj = new Date(dateString);

然后呢?

在我的新日期对象上使用dateObj.toISOString() 看起来可以让我接近。这将输出一个带有所需日期和时间的字符串,但不是所需的时区偏移量:

2020-01-10T00:00:00.000Z

然后我是否必须使用其他字符串方法来插入我想要的时区偏移量(例如dateObj.toISOString(dateObj).slice(0,23)+'-05:00')?或者我是否可以创建具有这个时区偏移量的初始日期对象?

我知道有一些库可以帮助解决这个问题(例如 momentjs)。但如果可能的话,我希望有一个普通的 JS 解决方案。

谢谢。

【问题讨论】:

  • 您的时区偏移量 (-5h) 是本地时区还是要强制此偏移量?
  • 我想在所有情况下都强制使用这个偏移量。
  • Date 对象没有时区。如果您只针对最近的浏览器,Intl.DateTimeFormat 可能适合您。

标签: javascript date


【解决方案1】:
moment([2016, 0, 1, 0, 0, 0]).utcOffset(-5, true) // Equivalent to "2016-01-01T00:00:00-05:00"

虽然我的回答可能不准确,但它可能对你有用,我请求你去 momemt.js 文档进一步澄清

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-27
    • 1970-01-01
    • 2013-07-11
    • 1970-01-01
    • 2021-11-24
    • 1970-01-01
    • 2017-06-01
    相关资源
    最近更新 更多