在Chrome新日期(‘8-5月-20’)正在工作,但在Firefox中,它显示为无效日期
Chrome:
火狐
请建议我如何使它在两种浏览器(火狐和Chrome)中工作。
发布于 2020-10-09 22:52:02
下面是解析这种日期格式的一种方法。在某些环境中可能需要Date#toLocaleDateString
的填充.或者你只需要硬编码MONTHS
。
CENTURY
被硬编码为21
。如果包含任何20世纪的日期,您将需要额外的逻辑来处理它们。如果这些日期中的任何一个是< 1920 (根据这个应用程序打算使用的时间进行调整),您将点击Y2K问题。因此,2位数的年份作为一种规范的日期格式通常是个坏主意.
const MONTHS = [...new Array(12).keys()].map(n =>
new Date(1970 /* year not important */, n, 15 /* nor the day */)
.toLocaleDateString('en-US', { month: 'short' })
.toUpperCase())
// ["JAN", "FEB", "MAR", "APR", "MAY", "JUN", "JUL", "AUG", "SEP", "OCT", "NOV", "DEC"]
const CENTURY = 21
const dateFromServerStr = str => {
const [d, m, y] = str.split('-')
return new Date(
(CENTURY - 1) * 100 + Number(y),
MONTHS.indexOf(m),
Number(d),
)
}
console.log(dateFromServerStr('8-MAY-20').toString())
https://stackoverflow.com/questions/64213411
复制相似问题