在JavaScript中,如何格式化日期对象以打印为10-Aug-2010?
10-Aug-2010
对于自定义分隔的日期格式,你必须从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实现中存在一个错误,涉及分钟和秒前导零(此错误被上述方法规避了)。
DateTimeFormat
DateTimeFormat#format
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%)。