对于自定义分隔的日期格式,你必须从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%)。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)