簡體   English   中英

日期輸入和toLocaleDateString使用不同的語言環境

[英]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之間的格式不同對我來說是莫名其妙的,關於如何對齊兩者的任何想法?

http://jsfiddle.net/DfkU5/283/

將您的語言環境作為基礎傳遞給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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM