我有一個日期格式設定,如下所示:
const shortMonth12 = {
year: 'numeric', month: 'short', day: 'numeric', hour: '2-digit', minute: '2-digit', hour12: 'true' };
這會給我以下日期格式:
console.log(date.toLocaleString('en-US', shortMonth12)) // "Mar 28, 2022, 01:55 PM"
太好了,它有效,我們有我們想要的日期格式。我們不想改變它。
但我們也想翻譯月份名稱。但問題是格式本身在提供另一個語言環境時也會發生變化。例如:
console.log(date.toLocaleString('sv-SE', shortMonth12)); // "28 mars 2022 01:55 em"
因此,我們希望使用語言環境來翻譯月份,但也要保持格式相同。實作的方式可能是這樣的嗎?
uj5u.com熱心網友回復:
因此,我們希望使用語言環境來翻譯月份,但也要保持格式相同。
不,因為toLocaleString使用提供的語言環境來格式化日期,結果取決于語言環境。
如果您使用 2 個具有不同日期格式的不同語言環境,例如en-US,sv-SE您將獲得不同的格式,如預期的那樣。
en-US: Mar 28, 2022, 02:19 PM
sv-SE:28 mars 2022 02:19 em
您可以通過創建字串手冊來獲得所需的結果,這需要更多的邏輯并且與背后的想法背道而馳toLocaleString。
使用 和 之類的函式toLocaleTimeString根據getFullYear語言環境創建變數,然后創建具有所需格式的字串,例如:
const customFormat = (date, locale) => {
let d = date.getDate(),
m = date.toLocaleString(locale, { month: 'long' }),
y = date.getFullYear(),
t = date.toLocaleTimeString(locale, { hour: '2-digit', minute: '2-digit', hour12: 'true' });
return `${d} ${m}, ${y}, ${t}`;
}
const d = new Date();
const d1 = customFormat(d, 'en-US');
const d2 = customFormat(d, 'sv-SE');
console.log(d1); // 28 March, 2022, 02:25 PM
console.log(d2); // 28 mars, 2022, 02:25 em
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/450909.html
標籤:javascript
下一篇:p標簽正在洗掉字串中的換行符
