ass*_*ler 1 javascript format datetime
我需要以 MM/dd/yyyy, hh:mm tt 格式显示“en”和“es”区域设置的日期。这种方法工作正常,但它将日期显示为 MM/dd/yy,仅显示年份的最后两位数字,而不是条目年份。
const en = new Intl.DateTimeFormat('en', { dateStyle: 'short', timeStyle: 'short', hour12: true }).format(new Date());
const es = new Intl.DateTimeFormat('es', { dateStyle: 'short', timeStyle: 'short', hour12: true }).format(new Date());
console.log('En', en, 'Es', es);Run Code Online (Sandbox Code Playgroud)
这种方法
const en = (new Date()).toLocaleString('en');
const es = (new Date()).toLocaleString('es');
console.log('En', en, 'Es', es);Run Code Online (Sandbox Code Playgroud)
显示全年,但显示“es”区域设置的 24 小时格式。
从这里我知道,当格式化大量日期时,最好创建一个 Intl.DateTimeFormat 对象并使用其 format 属性提供的函数。情况可能就是这样。我怎样才能让它发挥作用?
我需要以 MM/dd/yyyy, hh:mm tt 格式显示“en”和“es”区域设置的日期。
使用语言代码表示“es”,然后修改格式与 Intl 对象的目的相反。它应该根据提供的语言标签和未修改的结果来格式化值。
应手动或使用库创建特定格式(本质上是相同的)。西班牙语和英语使用相同的数字字符,因此如果两种语言没有日期或月份名称,则可以显示相同的时间戳,例如
关于如何格式化 javascript 日期,已经存在大量问题。以下是使用 Intl 对象的示例:
// MM/dd/yyyy, hh:mm tt using Intl.DateTimeFormat
function formatDate(date) {
let p = new Intl.DateTimeFormat('en',{
year:'numeric',
month:'2-digit',
day:'2-digit',
hour:'2-digit',
minute:'2-digit',
hour12: true
}).formatToParts(date).reduce((acc, part) => {
acc[part.type] = part.value;
return acc;
}, {});
return `${p.month}/${p.day}/${p.year}, ${p.hour}:${p.minute} ${p.dayPeriod}`;
}
console.log(formatDate(new Date()));Run Code Online (Sandbox Code Playgroud)
按月/日/年的顺序向西班牙语读者展示日期可能会让他们(以及绝大多数说英语的人)感到非常困惑。页面以特定语言呈现,因此所有日期、数字等都应遵循该语言的约定。
| 归档时间: |
|
| 查看次数: |
5089 次 |
| 最近记录: |