如何使用JavaScript格式化日期字符串

时间:2018-08-19 07:37:10

标签: javascript

我正在尝试重新格式化字符串日期,如下所述:

'25th May 1912' → 1912-05-2

我尝试使用Date.parse(),但是会引发错误。

有什么建议吗?

谢谢

3 个答案:

答案 0 :(得分:4)

JavaScript的built-in date parsing is very limited,它不支持许多格式。

如上面链接的文档所建议,除非有理由(页面加载时间等),否则我将使用库来解析此格式,例如momentjs

我认为以下内容将对其进行解析和重新格式化:

moment("25th May 1912", "Do MMM YYYY").format("YYYY-MM-DD");

还将解析“ 1912年5月21日”之类的变体,这些变体可能会导致简单的手动滚动实现中出现错误。

使用库有助于避免您可能不会想到的错误,并避免在您的应用程序中出现讨厌的,难以阅读的字符串黑客代码。

答案 1 :(得分:1)

console.log( parse('25st May 1912') )
console.log( parse('2nd September 2018') )
console.log( parse('6th January 2015') )

function parse(str) {
  let replaced = str.replace(/(th|st|nd|rd)/, '')
  let date = new Date(Date.parse(replaced))
  
  return date.toISOString().slice(0, 10)
}

答案 2 :(得分:1)

您应该从日期中删除thDate.parse会因此而返回NaN。 这应该起作用:

var input = '25th May 1912';
var validInput = input.replace(/(th|st|nd|rd)/, '');
var dateObj = new Date(Date.parse(validInput))
console.log(dateObj.getFullYear() + '-' + ('0' + (dateObj.getMonth()+1)).slice(-2) + '-' + ('0' + dateObj.getDate()).slice(-2));