一尘不染

JavaScript 如何格式化JavaScript日期

javascript

在JavaScript中,如何格式化日期对象以打印为10-Aug-2010


阅读 1768

收藏
2020-04-22

共1个答案

一尘不染

对于自定义分隔的日期格式,你必须从DateTimeFormat对象(属于ECMAScript Internationalization API的一部分)中提取日期(或时间)组件,然后手动使用所需的分隔符创建字符串。

为此,你可以使用DateTimeFormat#formatToParts:

const d = new Date('2010-08-05')

const dtf = new Intl.DateTimeFormat('en', { year: 'numeric', month: 'short', day: '2-digit' })

const [{ value: mo },,{ value: da },,{ value: ye }] = dtf.formatToParts(d)



console.log(`${da}-${mo}-${ye}`)

console.log(`${da}${mo}${ye}`) // just for fun

你还可以DateTimeFormat使用来一对一地提取各个部分DateTimeFormat#format,但请注意,使用此方法时,截至2020年3月,ECMAScript实现中存在一个错误,涉及分钟和秒前导零(此错误被上述方法规避了)。

const d = new Date('2010-08-05')

const ye = new Intl.DateTimeFormat('en', { year: 'numeric' }).format(d)

const mo = new Intl.DateTimeFormat('en', { month: 'short' }).format(d)

const da = new Intl.DateTimeFormat('en', { day: '2-digit' }).format(d)



console.log(`${da}-${mo}-${ye}`)

在处理日期和时间时,通常值得使用一个库(例如moment.js,luxon),因为该字段存在许多隐藏的复杂性。

请注意,IE10不支持在上述解决方案中使用的ECMAScript国际化API (2020年2月全球浏览器市场份额为0.03%)。

2020-04-22