【问题标题】:convert month string to date将月份字符串转换为日期
【发布时间】:2016-04-07 11:46:30
【问题描述】:

我正在使用一些不会按字符串值对对象进行排序但会按日期对对象进行排序的库。我有像“2008-04”这样的月份,我应该能够将它们转换为适当月份第一天的 Javascript 日期。但是我的本地时区搞砸了:

 new Date('2008-04')
 Mon Mar 31 2008 20:00:00 GMT-0400 (EDT)

这可能是 How do you convert a JavaScript date to UTC? 的副本,但对于我的特定用例,也许有比那里更简单的答案?

顺便说一句,我通过指定月份的第一天得到相同的答案:

 new Date('2008-04-01')
 Mon Mar 31 2008 20:00:00 GMT-0400 (EDT)

我正在使用 ES6。我想这不会让它变得更简单吗?

【问题讨论】:

  • 你可以看看一些生产就绪的库,比如momentjs.com - 也许它已经解决了这个问题
  • 是的,我以前用过momentjs。对于解决一个我懒得用 5 行 javascript 解决的小问题来说,这是相当大的。

标签: javascript date utc


【解决方案1】:

'-01T00:00:00Z' 添加到带有ISO 6801 部分日期的字符串中:

document.write(new Date('2008-04' + '-01T00:00:00Z'));

【讨论】:

  • new Date('2008-04-01') --> Mon Mar 31 2008 20:00:00 GMT-0400 (EDT)
  • 您可以将日期字符串视为字符串进行排序。 iso 日期始终是本地化的,并且根据您的时区,您会获得过去的日期。但是您仍然可以使用此日期进行排序,因为每个日期的错误总是相同的。
【解决方案2】:

我误会了。日期已经是 UTC,只是当我在本地将其显示为字符串时,它才会转换为我的本地时区。所以答案就是

 new Date('2008-04').toUTCString()
 "Tue, 01 Apr 2008 00:00:00 GMT"

 new Date('2008-04').toISOString()
 "2008-04-01T00:00:00.000Z"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-03-09
    • 1970-01-01
    • 2016-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-22
    相关资源
    最近更新 更多