在 JavaScript 如何将格式化日期对象打印成10-Aug-2010?6 x: E& U, s) E$ K* I
% s% V% R0 u" F9 p8 M解决方案: % s' Y1 Q( e9 C2 M+ v- l 对于自定义分隔的日期格式,您必须从DateTimeFormat对象(这是 ECMAScript 国际化 API提取日期(或时间)组件,然后手动创建带有所需分隔符的字符串。 n- B% ^, ]) w$ F, i; c
为此,您可以使用它DateTimeFormat#formatToParts.由于数组输出取决于语言环境: - \/ f r/ U' z( G% e' d7 j2 ~
{ // example 1 let f = new Intl.DateTimeFormat('en let a = f.formatToParts(); console.log(a);}{ // example 2 let f = new Intl.DateTimeFormat('hi let a = f.formatToParts(); console.log(a);}" V7 x2 E8 j/ U: y& k0 b* ]
最好将格式数组映射到结果字符串:* i: q( n: X8 V; ?7 H/ |
function join(t,a,s) { function format(m) { let f = new Intl.DateTimeFormat('en',m); return f.format(t); return a.map(format).join(s);}let a = [{day: 'numeric'},{month: 'short'},{year: 'numeric'}];let s = join(new Date,a,'-');console.log(s);7 ]% p4 O; M9 e5 R
DateTimeFormat也可以用 一个一个拉出部分DateTimeFormat#format,但请注意,截至2020年 3 月,ECMAScript 实现中存在一个错误,即分钟和秒的前导零(上述方法避免了这个错误)。 2 E# i( \+ t* M6 v" @, x C3 O7 r
let d = new Date(2010,7,5);let ye = new Intl.DateTimeFormat('en',{ year: 'numeric' }).format(d);let mo = new Intl.DateTimeFormat('en',{ month: 'short' }).format(d);let da = new Intl.DateTimeFormat('en',{ day: '2-digit' }).format(d);console.log(`${da}-${mo}-${ye}`); ( K; @: ]8 M& b& {5 M1 m) T3 I5 u