【问题标题】:JavaScript - Convert an awkward string to a date [duplicate]JavaScript - 将尴尬的字符串转换为日期[重复]
【发布时间】:2018-10-27 14:37:01
【问题描述】:

我遇到了使用 Javascript 将以下(字符串)转换为日期的问题:

2nd June 2018

这个字符串是由另一个我无法控制的系统创建的,除了 javascript,本质上我需要将此字符串转换为日期以添加日期,我可以显示以下示例:

2018 年 6 月 2 日 - 2018 年 6 月 9 日等

不幸的是,除了进行转换之外,我没有其他办法,

有什么想法吗?

谢谢!

【问题讨论】:

  • 这不是已经是日期格式了吗?你想达到什么目的。提供一些示例(示例)和您自己的尝试代码
  • 是的,请提供更多示例。是用户手动输入的还是其他来源输入的?
  • 它目前是一个字符串,我需要将其转换为日期,以便进行计算/添加天数等
  • 这里已经有大量关于如何解析时间戳的问题。答案是一样的:使用带有解析器的库(有很多好的库,很多比 moment.js 小得多)或编写一个函数来解析您的特定格式。第二个选项可能是 3 行代码。

标签: javascript jquery string date type-conversion


【解决方案1】:

使用 moment.js 很容易。此外,使用 moment.js,您必须进行的所有计算都会变得更加容易......

let d = "2nd June 2018";
let m = moment(d, 'Do MMMM YYYY');
console.log(m.format())
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.1/moment-with-locales.min.js"></script>

【讨论】:

  • 时刻就是爱。瞬间就是生命
  • 谢谢!我现在就试一试:)
  • 根据moment.js documentation,天数的解析token是错误的,应该是“Do”,而不是“DD”。
【解决方案2】:

检查一下

    console.log(new Date("2nd June 2018".replace(/(\d+)(st|nd|rd|th)/, "$1")));        

【讨论】:

  • 这可能行得通,但不要这样做,你知道他们说什么......“你有问题吗?使用正则表达式!现在你有 2 个问题”。 Moment.js 相当小(16 kb),可以帮助您处理整个项目的日期,如果您的源更改了返回日期的方式,您可以快速适应它们的更改。
  • 16kb不小
  • 解析除 ECMA-262 中提到的格式以外的格式依赖于实现,因此通常的建议是不要使用内置解析器。
猜你喜欢
  • 1970-01-01
  • 2015-10-01
  • 2016-02-28
  • 2011-06-08
  • 2018-03-19
  • 1970-01-01
  • 2016-05-11
  • 2018-11-24
  • 2017-04-28
相关资源
最近更新 更多