[英]Date input and toLocaleDateString using different locales
我居住在加拿大,在這里我們格式化日期dd / mm / yyyy。 調用toLocaleDateString()
時看到異常情況
HTML:
<input type="date" value="2016-01-13">
<p id="container">
</p>
JS:
var d = new Date("2016-01-13");
document.getElementById('container').innerText = d.toLocaleDateString();
日期輸入的值是我期望的2016-01-13
。
該段的值是美國格式12-01-2016
(日期的更改是由於從格林尼治標准時間(GMT)到EST的本地化)
Chrome語言和我的系統設置一樣設置為加拿大語言(Windows 7)。 輸入的日期似乎對此表示尊重,但我認為toLocaleDateString()
會選擇加拿大作為我的語言環境,並適當地設置日期格式。
MSDN這樣描述此功能:
dateObj.toLocaleDateString([locales] [,options])
語言環境(可選)。 包含一種或多種語言或語言環境標簽的語言環境字符串數組。 如果包含多個語言環境字符串,請按優先級從高到低的順序列出它們,以便第一個條目是首選的語言環境。 如果省略此參數,則使用JavaScript運行時的默認語言環境。
用戶可以更改JavaScript運行時的默認語言環境嗎? 我猜不是因為我缺乏成功。
日期輸入和toLocaleDateString
之間的格式不同對我來說是莫名其妙的,關於如何對齊兩者的任何想法?
將您的語言環境作為基礎傳遞給toLocaleDateString()
例如:
date.toLocaleDateString('en-CA')
或者如果您想指定一些備用語言,請執行此操作
date.toLocaleDateString(['en-CA','en-US'])
在這里檢查
用戶可以更改JavaScript運行時的默認語言環境嗎?
這完全取決於瀏覽器開發人員,他們可以做任何喜歡的事情。 但是,他們傾向於使用系統設置,但並非總是如此。 Chrome忽略了我對toLocalString的設置,當我的首選項設置為d / m / y時,以m / d / y格式顯示日期。
Safari,Chrome和Firefox都為toLocaleDate顯示了不同的字符串,這使它幾乎無用。
日期輸入和toLocaleDateString之間的格式不同對我來說是莫名其妙的,關於如何對齊兩者的任何想法?
到目前為止,最好的解決方案是以明確的格式顯示日期,最簡單的方法是使用月份名稱。 以下所有內容都明確且易於閱讀:
19-Mar-2016
March 19, 2016
19 March, 2016
為此,您可以編寫自己的格式化程序(可能是10行代碼),或者使用庫。
關於輸入類型日期,並不是所有的瀏覽器都支持它,因此存在很多問題 ,因此,如果要使用它,則必須檢查支持(相當瑣碎),如果缺少,請提供一個有意義的備用方法。 一旦有了良好的后備,您就可以在任何地方實施它,而忘了輸入類型日期。
然后所有與之相關的問題都消失了。 ;-)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.