2010-03-05 59 views
48

無論如何,我們可以使用JavaScript在控制面板 - >區域和語言設置中使用短日期格式嗎?使用javascript獲取語言環境短日期格式

我知道用以下我們可以得到區域設置長名稱格式

toString() 
toLocaleString() 
toLocaleDateString() 
toLocaleTimeString() 

的組合,但沒有直接作用在JavaScript像toLocaleShortDateString()

是否有任何腳本可用來找出用戶設置是什麼?

謝謝。

+0

只是爲了確保我的理解:你的意思是熱拿到格式本身?因爲你給的「缺失函數」的名稱是誤導(toLocaleShortDateString),也許像「getLocaleShortDateFormat」? – 2010-03-05 21:38:25

+0

我發現這個[相關問題](http://stackoverflow.com/questions/673905/best-way-to-determine-users-locale-within-browser)的答案更有助於我的目的,因爲我只是想提供一個半體面的默認值,其中僅提供客戶端解決方案是有用的。 – 2014-09-25 04:54:42

回答

4

我不知道有一種方法可以做到這一點(你可以get the language並嘗試從中扣除語言環境)。

我試着做點小事來嘗試做到這一點(僅在Firefox上使用一種語言環境進行測試)。應該只要短日期字符串包含日期數字,所以它可能會失敗,例如,阿拉伯語。它可能有其他錯誤太多,我不知道所有的不同的區域特點,這只是一個概念...

function getShortDateFormat() { 
    var d = new Date(1992, 0, 7); 
    var s = d.toLocaleDateString(); 

    function formatReplacer(str) { 
     var num = parseInt(str); 
     switch (num % 100) { 
      case 92: 
       return str.replace(/.{1}/g, "Y"); 
      case 1: 
       return str.length == 1 ? "mM" : "MM" 
      case 7: 
       return str.length == 1 ? "dD" : "DD" 
     } 
    } 

    shortDateFormat = s.replace(/\d+/g, formatReplacer); 
    return shortDateFormat; 
} 

getShortDateFormat(); 

的輸出格式爲:

  • Y:數量數字來表示年
  • DD =短日(即只用一個數字如果可能)
  • DD =漫長的一天格式(即總是兩位數)
  • 毫米/ MM - 同幾個月

所以在我的瀏覽器中,你得到的shortDateformat是「MM/DD/YYYY」。

+0

我得到:「martes,DD de enero de YYYY」 – 2010-03-09 15:24:56

+0

然後顯然我需要更多的工作:)(僅在Firefox 3.5/Linux上測試) – 2010-03-13 18:36:31

+0

返回未定義的日期部分在鉻38 X11 – 2014-07-21 23:36:56

2

這取決於瀏覽器的toLocaleDateString()實現。 例如在Chrome中,您將看到如下所示的內容:「星期二,一月DD,YYYY」

8

無法完成。

跨瀏覽器JavaScript無法使用用戶在提供此類區域定製的平臺上選擇的實際短日期格式。此外,JavaScript在任何形式的格式方面都有巨大的漏洞。看看有多少麻煩零填充!

您可以盡力獲取語言設置,並獲取格式的該語言環境。當你甚至不知道它是否是正確的語言環境時(我敢打賭,國際語言頭文件通常不正確或不夠具體),或者如果用戶已將該格式定製爲其他內容,那麼這是很多工作。

您可以嘗試使用客戶端VBScript(它具有所有這些區域格式排列的功能),但這不是一個好主意,因爲它是一種即將死去的(死了的)特定於IE的技術。

您也可以嘗試使用Java/Flash/Silverlight來挖掘格式。這也是一項額外的工作,但可能有最好的成功機會。你想要緩存它的會話,以儘量減少開銷。

希望HTML5 <時間>元素將爲i18n日期/時間顯示提供一些緩解。

1

有沒有簡單的方法。如果你想要一個可靠的,跨瀏覽器的解決方案,你必須建立一個日期和時間格式字符串查找表,文化。要格式化日期,請解析相應的格式字符串,從日期(即日,月,年)提取相關部分,然後將它們附加在一起。

這實質上就是微軟對他們的AJAX庫所做的事情,如@ no的答案所示。

12
function getLocaleShortDateString(d) 
{ 
    var f={"ar-SA":"dd/MM/yy","bg-BG":"dd.M.yyyy","ca-ES":"dd/MM/yyyy","zh-TW":"yyyy/M/d","cs-CZ":"d.M.yyyy","da-DK":"dd-MM-yyyy","de-DE":"dd.MM.yyyy","el-GR":"d/M/yyyy","en-US":"M/d/yyyy","fi-FI":"d.M.yyyy","fr-FR":"dd/MM/yyyy","he-IL":"dd/MM/yyyy","hu-HU":"yyyy. MM. dd.","is-IS":"d.M.yyyy","it-IT":"dd/MM/yyyy","ja-JP":"yyyy/MM/dd","ko-KR":"yyyy-MM-dd","nl-NL":"d-M-yyyy","nb-NO":"dd.MM.yyyy","pl-PL":"yyyy-MM-dd","pt-BR":"d/M/yyyy","ro-RO":"dd.MM.yyyy","ru-RU":"dd.MM.yyyy","hr-HR":"d.M.yyyy","sk-SK":"d. M. yyyy","sq-AL":"yyyy-MM-dd","sv-SE":"yyyy-MM-dd","th-TH":"d/M/yyyy","tr-TR":"dd.MM.yyyy","ur-PK":"dd/MM/yyyy","id-ID":"dd/MM/yyyy","uk-UA":"dd.MM.yyyy","be-BY":"dd.MM.yyyy","sl-SI":"d.M.yyyy","et-EE":"d.MM.yyyy","lv-LV":"yyyy.MM.dd.","lt-LT":"yyyy.MM.dd","fa-IR":"MM/dd/yyyy","vi-VN":"dd/MM/yyyy","hy-AM":"dd.MM.yyyy","az-Latn-AZ":"dd.MM.yyyy","eu-ES":"yyyy/MM/dd","mk-MK":"dd.MM.yyyy","af-ZA":"yyyy/MM/dd","ka-GE":"dd.MM.yyyy","fo-FO":"dd-MM-yyyy","hi-IN":"dd-MM-yyyy","ms-MY":"dd/MM/yyyy","kk-KZ":"dd.MM.yyyy","ky-KG":"dd.MM.yy","sw-KE":"M/d/yyyy","uz-Latn-UZ":"dd/MM yyyy","tt-RU":"dd.MM.yyyy","pa-IN":"dd-MM-yy","gu-IN":"dd-MM-yy","ta-IN":"dd-MM-yyyy","te-IN":"dd-MM-yy","kn-IN":"dd-MM-yy","mr-IN":"dd-MM-yyyy","sa-IN":"dd-MM-yyyy","mn-MN":"yy.MM.dd","gl-ES":"dd/MM/yy","kok-IN":"dd-MM-yyyy","syr-SY":"dd/MM/yyyy","dv-MV":"dd/MM/yy","ar-IQ":"dd/MM/yyyy","zh-CN":"yyyy/M/d","de-CH":"dd.MM.yyyy","en-GB":"dd/MM/yyyy","es-MX":"dd/MM/yyyy","fr-BE":"d/MM/yyyy","it-CH":"dd.MM.yyyy","nl-BE":"d/MM/yyyy","nn-NO":"dd.MM.yyyy","pt-PT":"dd-MM-yyyy","sr-Latn-CS":"d.M.yyyy","sv-FI":"d.M.yyyy","az-Cyrl-AZ":"dd.MM.yyyy","ms-BN":"dd/MM/yyyy","uz-Cyrl-UZ":"dd.MM.yyyy","ar-EG":"dd/MM/yyyy","zh-HK":"d/M/yyyy","de-AT":"dd.MM.yyyy","en-AU":"d/MM/yyyy","es-ES":"dd/MM/yyyy","fr-CA":"yyyy-MM-dd","sr-Cyrl-CS":"d.M.yyyy","ar-LY":"dd/MM/yyyy","zh-SG":"d/M/yyyy","de-LU":"dd.MM.yyyy","en-CA":"dd/MM/yyyy","es-GT":"dd/MM/yyyy","fr-CH":"dd.MM.yyyy","ar-DZ":"dd-MM-yyyy","zh-MO":"d/M/yyyy","de-LI":"dd.MM.yyyy","en-NZ":"d/MM/yyyy","es-CR":"dd/MM/yyyy","fr-LU":"dd/MM/yyyy","ar-MA":"dd-MM-yyyy","en-IE":"dd/MM/yyyy","es-PA":"MM/dd/yyyy","fr-MC":"dd/MM/yyyy","ar-TN":"dd-MM-yyyy","en-ZA":"yyyy/MM/dd","es-DO":"dd/MM/yyyy","ar-OM":"dd/MM/yyyy","en-JM":"dd/MM/yyyy","es-VE":"dd/MM/yyyy","ar-YE":"dd/MM/yyyy","en-029":"MM/dd/yyyy","es-CO":"dd/MM/yyyy","ar-SY":"dd/MM/yyyy","en-BZ":"dd/MM/yyyy","es-PE":"dd/MM/yyyy","ar-JO":"dd/MM/yyyy","en-TT":"dd/MM/yyyy","es-AR":"dd/MM/yyyy","ar-LB":"dd/MM/yyyy","en-ZW":"M/d/yyyy","es-EC":"dd/MM/yyyy","ar-KW":"dd/MM/yyyy","en-PH":"M/d/yyyy","es-CL":"dd-MM-yyyy","ar-AE":"dd/MM/yyyy","es-UY":"dd/MM/yyyy","ar-BH":"dd/MM/yyyy","es-PY":"dd/MM/yyyy","ar-QA":"dd/MM/yyyy","es-BO":"dd/MM/yyyy","es-SV":"dd/MM/yyyy","es-HN":"dd/MM/yyyy","es-NI":"dd/MM/yyyy","es-PR":"dd/MM/yyyy","am-ET":"d/M/yyyy","tzm-Latn-DZ":"dd-MM-yyyy","iu-Latn-CA":"d/MM/yyyy","sma-NO":"dd.MM.yyyy","mn-Mong-CN":"yyyy/M/d","gd-GB":"dd/MM/yyyy","en-MY":"d/M/yyyy","prs-AF":"dd/MM/yy","bn-BD":"dd-MM-yy","wo-SN":"dd/MM/yyyy","rw-RW":"M/d/yyyy","qut-GT":"dd/MM/yyyy","sah-RU":"MM.dd.yyyy","gsw-FR":"dd/MM/yyyy","co-FR":"dd/MM/yyyy","oc-FR":"dd/MM/yyyy","mi-NZ":"dd/MM/yyyy","ga-IE":"dd/MM/yyyy","se-SE":"yyyy-MM-dd","br-FR":"dd/MM/yyyy","smn-FI":"d.M.yyyy","moh-CA":"M/d/yyyy","arn-CL":"dd-MM-yyyy","ii-CN":"yyyy/M/d","dsb-DE":"d. M. yyyy","ig-NG":"d/M/yyyy","kl-GL":"dd-MM-yyyy","lb-LU":"dd/MM/yyyy","ba-RU":"dd.MM.yy","nso-ZA":"yyyy/MM/dd","quz-BO":"dd/MM/yyyy","yo-NG":"d/M/yyyy","ha-Latn-NG":"d/M/yyyy","fil-PH":"M/d/yyyy","ps-AF":"dd/MM/yy","fy-NL":"d-M-yyyy","ne-NP":"M/d/yyyy","se-NO":"dd.MM.yyyy","iu-Cans-CA":"d/M/yyyy","sr-Latn-RS":"d.M.yyyy","si-LK":"yyyy-MM-dd","sr-Cyrl-RS":"d.M.yyyy","lo-LA":"dd/MM/yyyy","km-KH":"yyyy-MM-dd","cy-GB":"dd/MM/yyyy","bo-CN":"yyyy/M/d","sms-FI":"d.M.yyyy","as-IN":"dd-MM-yyyy","ml-IN":"dd-MM-yy","en-IN":"dd-MM-yyyy","or-IN":"dd-MM-yy","bn-IN":"dd-MM-yy","tk-TM":"dd.MM.yy","bs-Latn-BA":"d.M.yyyy","mt-MT":"dd/MM/yyyy","sr-Cyrl-ME":"d.M.yyyy","se-FI":"d.M.yyyy","zu-ZA":"yyyy/MM/dd","xh-ZA":"yyyy/MM/dd","tn-ZA":"yyyy/MM/dd","hsb-DE":"d. M. yyyy","bs-Cyrl-BA":"d.M.yyyy","tg-Cyrl-TJ":"dd.MM.yy","sr-Latn-BA":"d.M.yyyy","smj-NO":"dd.MM.yyyy","rm-CH":"dd/MM/yyyy","smj-SE":"yyyy-MM-dd","quz-EC":"dd/MM/yyyy","quz-PE":"dd/MM/yyyy","hr-BA":"d.M.yyyy.","sr-Latn-ME":"d.M.yyyy","sma-SE":"yyyy-MM-dd","en-SG":"d/M/yyyy","ug-CN":"yyyy-M-d","sr-Cyrl-BA":"d.M.yyyy","es-US":"M/d/yyyy"}; 

    var l=navigator.language?navigator.language:navigator['userLanguage'],y=d.getFullYear(),m=d.getMonth()+1,d=d.getDate(); 
    f=(l in f)?f[l]:"MM/dd/yyyy"; 
    function z(s){s=''+s;return s.length>1?s:'0'+s;} 
    f=f.replace(/yyyy/,y);f=f.replace(/yy/,String(y).substr(2)); 
    f=f.replace(/MM/,z(m));f=f.replace(/M/,m); 
    f=f.replace(/dd/,z(d));f=f.replace(/d/,d); 
    return f; 
} 

使用:

shortedDate=getLocaleShortDateString(new Date(1992, 0, 7)); 
+1

這工作,但unfourtunatelly它不會處理一些瀏覽器發送的雙字母語言代碼(我認爲firefox給了我例如「da」而不是「da-DK」)。我想我會爲我想支持的語言添加雙字母代碼,但真正很酷的解決方案是從兩個字母的代碼中找到並默認使用某些語言文化名稱。 – Alvis 2013-11-21 16:24:03

+0

Hello @ holden321我可以獲得本地時間並轉換爲dd/MM/yyyy格式嗎?我問了一個問題http://stackoverflow.com/questions/36226676/how-to-convert-date-and-time-convert-into-different-2-zone但任何人都不幫助我。 – 2016-03-26 07:00:58

-1

試試這個:

new Date().toLocaleFormat("%x"); 

所有格式此功能可以在這裏找到: http://pubs.opengroup.org/onlinepubs/007908799/xsh/strftime.html

+2

僅適用於Firefox – 2012-06-08 23:53:39

+3

使用此方法給我帶來了太多的痛苦,我不得不拋棄它。 Chrome將無法識別它。 – KevinDeus 2012-08-27 22:08:56

+0

我必須同意以前的評論者:如果可以,請遠離此功能。 – ADi3ek 2013-07-05 10:31:38

51
function getLocaleDateString(){ 

var formats = { 
    "ar-SA" : "dd/MM/yy", 
    "bg-BG" : "dd.M.yyyy", 
    "ca-ES" : "dd/MM/yyyy", 
    "zh-TW" : "yyyy/M/d", 
    "cs-CZ" : "d.M.yyyy", 
    "da-DK" : "dd-MM-yyyy", 
    "de-DE" : "dd.MM.yyyy", 
    "el-GR" : "d/M/yyyy", 
    "en-US" : "M/d/yyyy", 
    "fi-FI" : "d.M.yyyy", 
    "fr-FR" : "dd/MM/yyyy", 
    "he-IL" : "dd/MM/yyyy", 
    "hu-HU" : "yyyy. MM. dd.", 
    "is-IS" : "d.M.yyyy", 
    "it-IT" : "dd/MM/yyyy", 
    "ja-JP" : "yyyy/MM/dd", 
    "ko-KR" : "yyyy-MM-dd", 
    "nl-NL" : "d-M-yyyy", 
    "nb-NO" : "dd.MM.yyyy", 
    "pl-PL" : "yyyy-MM-dd", 
    "pt-BR" : "d/M/yyyy", 
    "ro-RO" : "dd.MM.yyyy", 
    "ru-RU" : "dd.MM.yyyy", 
    "hr-HR" : "d.M.yyyy", 
    "sk-SK" : "d. M. yyyy", 
    "sq-AL" : "yyyy-MM-dd", 
    "sv-SE" : "yyyy-MM-dd", 
    "th-TH" : "d/M/yyyy", 
    "tr-TR" : "dd.MM.yyyy", 
    "ur-PK" : "dd/MM/yyyy", 
    "id-ID" : "dd/MM/yyyy", 
    "uk-UA" : "dd.MM.yyyy", 
    "be-BY" : "dd.MM.yyyy", 
    "sl-SI" : "d.M.yyyy", 
    "et-EE" : "d.MM.yyyy", 
    "lv-LV" : "yyyy.MM.dd.", 
    "lt-LT" : "yyyy.MM.dd", 
    "fa-IR" : "MM/dd/yyyy", 
    "vi-VN" : "dd/MM/yyyy", 
    "hy-AM" : "dd.MM.yyyy", 
    "az-Latn-AZ" : "dd.MM.yyyy", 
    "eu-ES" : "yyyy/MM/dd", 
    "mk-MK" : "dd.MM.yyyy", 
    "af-ZA" : "yyyy/MM/dd", 
    "ka-GE" : "dd.MM.yyyy", 
    "fo-FO" : "dd-MM-yyyy", 
    "hi-IN" : "dd-MM-yyyy", 
    "ms-MY" : "dd/MM/yyyy", 
    "kk-KZ" : "dd.MM.yyyy", 
    "ky-KG" : "dd.MM.yy", 
    "sw-KE" : "M/d/yyyy", 
    "uz-Latn-UZ" : "dd/MM yyyy", 
    "tt-RU" : "dd.MM.yyyy", 
    "pa-IN" : "dd-MM-yy", 
    "gu-IN" : "dd-MM-yy", 
    "ta-IN" : "dd-MM-yyyy", 
    "te-IN" : "dd-MM-yy", 
    "kn-IN" : "dd-MM-yy", 
    "mr-IN" : "dd-MM-yyyy", 
    "sa-IN" : "dd-MM-yyyy", 
    "mn-MN" : "yy.MM.dd", 
    "gl-ES" : "dd/MM/yy", 
    "kok-IN" : "dd-MM-yyyy", 
    "syr-SY" : "dd/MM/yyyy", 
    "dv-MV" : "dd/MM/yy", 
    "ar-IQ" : "dd/MM/yyyy", 
    "zh-CN" : "yyyy/M/d", 
    "de-CH" : "dd.MM.yyyy", 
    "en-GB" : "dd/MM/yyyy", 
    "es-MX" : "dd/MM/yyyy", 
    "fr-BE" : "d/MM/yyyy", 
    "it-CH" : "dd.MM.yyyy", 
    "nl-BE" : "d/MM/yyyy", 
    "nn-NO" : "dd.MM.yyyy", 
    "pt-PT" : "dd-MM-yyyy", 
    "sr-Latn-CS" : "d.M.yyyy", 
    "sv-FI" : "d.M.yyyy", 
    "az-Cyrl-AZ" : "dd.MM.yyyy", 
    "ms-BN" : "dd/MM/yyyy", 
    "uz-Cyrl-UZ" : "dd.MM.yyyy", 
    "ar-EG" : "dd/MM/yyyy", 
    "zh-HK" : "d/M/yyyy", 
    "de-AT" : "dd.MM.yyyy", 
    "en-AU" : "d/MM/yyyy", 
    "es-ES" : "dd/MM/yyyy", 
    "fr-CA" : "yyyy-MM-dd", 
    "sr-Cyrl-CS" : "d.M.yyyy", 
    "ar-LY" : "dd/MM/yyyy", 
    "zh-SG" : "d/M/yyyy", 
    "de-LU" : "dd.MM.yyyy", 
    "en-CA" : "dd/MM/yyyy", 
    "es-GT" : "dd/MM/yyyy", 
    "fr-CH" : "dd.MM.yyyy", 
    "ar-DZ" : "dd-MM-yyyy", 
    "zh-MO" : "d/M/yyyy", 
    "de-LI" : "dd.MM.yyyy", 
    "en-NZ" : "d/MM/yyyy", 
    "es-CR" : "dd/MM/yyyy", 
    "fr-LU" : "dd/MM/yyyy", 
    "ar-MA" : "dd-MM-yyyy", 
    "en-IE" : "dd/MM/yyyy", 
    "es-PA" : "MM/dd/yyyy", 
    "fr-MC" : "dd/MM/yyyy", 
    "ar-TN" : "dd-MM-yyyy", 
    "en-ZA" : "yyyy/MM/dd", 
    "es-DO" : "dd/MM/yyyy", 
    "ar-OM" : "dd/MM/yyyy", 
    "en-JM" : "dd/MM/yyyy", 
    "es-VE" : "dd/MM/yyyy", 
    "ar-YE" : "dd/MM/yyyy", 
    "en-029" : "MM/dd/yyyy", 
    "es-CO" : "dd/MM/yyyy", 
    "ar-SY" : "dd/MM/yyyy", 
    "en-BZ" : "dd/MM/yyyy", 
    "es-PE" : "dd/MM/yyyy", 
    "ar-JO" : "dd/MM/yyyy", 
    "en-TT" : "dd/MM/yyyy", 
    "es-AR" : "dd/MM/yyyy", 
    "ar-LB" : "dd/MM/yyyy", 
    "en-ZW" : "M/d/yyyy", 
    "es-EC" : "dd/MM/yyyy", 
    "ar-KW" : "dd/MM/yyyy", 
    "en-PH" : "M/d/yyyy", 
    "es-CL" : "dd-MM-yyyy", 
    "ar-AE" : "dd/MM/yyyy", 
    "es-UY" : "dd/MM/yyyy", 
    "ar-BH" : "dd/MM/yyyy", 
    "es-PY" : "dd/MM/yyyy", 
    "ar-QA" : "dd/MM/yyyy", 
    "es-BO" : "dd/MM/yyyy", 
    "es-SV" : "dd/MM/yyyy", 
    "es-HN" : "dd/MM/yyyy", 
    "es-NI" : "dd/MM/yyyy", 
    "es-PR" : "dd/MM/yyyy", 
    "am-ET" : "d/M/yyyy", 
    "tzm-Latn-DZ" : "dd-MM-yyyy", 
    "iu-Latn-CA" : "d/MM/yyyy", 
    "sma-NO" : "dd.MM.yyyy", 
    "mn-Mong-CN" : "yyyy/M/d", 
    "gd-GB" : "dd/MM/yyyy", 
    "en-MY" : "d/M/yyyy", 
    "prs-AF" : "dd/MM/yy", 
    "bn-BD" : "dd-MM-yy", 
    "wo-SN" : "dd/MM/yyyy", 
    "rw-RW" : "M/d/yyyy", 
    "qut-GT" : "dd/MM/yyyy", 
    "sah-RU" : "MM.dd.yyyy", 
    "gsw-FR" : "dd/MM/yyyy", 
    "co-FR" : "dd/MM/yyyy", 
    "oc-FR" : "dd/MM/yyyy", 
    "mi-NZ" : "dd/MM/yyyy", 
    "ga-IE" : "dd/MM/yyyy", 
    "se-SE" : "yyyy-MM-dd", 
    "br-FR" : "dd/MM/yyyy", 
    "smn-FI" : "d.M.yyyy", 
    "moh-CA" : "M/d/yyyy", 
    "arn-CL" : "dd-MM-yyyy", 
    "ii-CN" : "yyyy/M/d", 
    "dsb-DE" : "d. M. yyyy", 
    "ig-NG" : "d/M/yyyy", 
    "kl-GL" : "dd-MM-yyyy", 
    "lb-LU" : "dd/MM/yyyy", 
    "ba-RU" : "dd.MM.yy", 
    "nso-ZA" : "yyyy/MM/dd", 
    "quz-BO" : "dd/MM/yyyy", 
    "yo-NG" : "d/M/yyyy", 
    "ha-Latn-NG" : "d/M/yyyy", 
    "fil-PH" : "M/d/yyyy", 
    "ps-AF" : "dd/MM/yy", 
    "fy-NL" : "d-M-yyyy", 
    "ne-NP" : "M/d/yyyy", 
    "se-NO" : "dd.MM.yyyy", 
    "iu-Cans-CA" : "d/M/yyyy", 
    "sr-Latn-RS" : "d.M.yyyy", 
    "si-LK" : "yyyy-MM-dd", 
    "sr-Cyrl-RS" : "d.M.yyyy", 
    "lo-LA" : "dd/MM/yyyy", 
    "km-KH" : "yyyy-MM-dd", 
    "cy-GB" : "dd/MM/yyyy", 
    "bo-CN" : "yyyy/M/d", 
    "sms-FI" : "d.M.yyyy", 
    "as-IN" : "dd-MM-yyyy", 
    "ml-IN" : "dd-MM-yy", 
    "en-IN" : "dd-MM-yyyy", 
    "or-IN" : "dd-MM-yy", 
    "bn-IN" : "dd-MM-yy", 
    "tk-TM" : "dd.MM.yy", 
    "bs-Latn-BA" : "d.M.yyyy", 
    "mt-MT" : "dd/MM/yyyy", 
    "sr-Cyrl-ME" : "d.M.yyyy", 
    "se-FI" : "d.M.yyyy", 
    "zu-ZA" : "yyyy/MM/dd", 
    "xh-ZA" : "yyyy/MM/dd", 
    "tn-ZA" : "yyyy/MM/dd", 
    "hsb-DE" : "d. M. yyyy", 
    "bs-Cyrl-BA" : "d.M.yyyy", 
    "tg-Cyrl-TJ" : "dd.MM.yy", 
    "sr-Latn-BA" : "d.M.yyyy", 
    "smj-NO" : "dd.MM.yyyy", 
    "rm-CH" : "dd/MM/yyyy", 
    "smj-SE" : "yyyy-MM-dd", 
    "quz-EC" : "dd/MM/yyyy", 
    "quz-PE" : "dd/MM/yyyy", 
    "hr-BA" : "d.M.yyyy.", 
    "sr-Latn-ME" : "d.M.yyyy", 
    "sma-SE" : "yyyy-MM-dd", 
    "en-SG" : "d/M/yyyy", 
    "ug-CN" : "yyyy-M-d", 
    "sr-Cyrl-BA" : "d.M.yyyy", 
    "es-US" : "M/d/yyyy" 
}; 

    return formats[navigator.language] || 'dd/MM/yyyy'; 

} 
+4

爲什麼這個清單很難在互聯網上找到! – sidonaldson 2014-11-28 15:54:00

+4

這需要不區分大小寫,我的Safari返回en-us。 – QuentinUK 2015-03-14 01:21:40

+0

本地格式可以不同(自定義),取決於操作系統 – iegik 2016-07-14 10:59:44

19

我認爲這是最好這樣做...

var date = new Date(); 

var options = { 
    weekday: "short", 
    year: "numeric", 
    month: "2-digit", 
    day: "numeric" 
}; 

date.toLocaleDateString("en", options);//en is language option, you may specify.. 

更多選項和他們的例子....

Option   Values and sample output 

weekday  narrow M 
       short Mon 
       long Monday 

year   2-digit 01 
       numeric 2001 

month   2-digit 01 
       numeric 1 
       narrow J 
       short Jan 
       long January 

day    2-digit 01 
       numeric 1 

hour   2-digit 12 AM 
       numeric 12 AM 

minute   2-digit 0 
       numeric 0 

second   2-digit 0 
       numeric 0 

timeZoneName short 1/1/2001 GMT+00:00 
       long 1/1/2001 GMT+00:00 
+0

請注意,IE(截至10)不尊重這些選項,並且會返回您指定的月份名稱。 – Whelkaholism 2013-10-31 15:46:06

+0

面對FF最新版本(25)表現出相同的行爲;似乎只有Chrome支持這些選項。 – Whelkaholism 2013-10-31 15:51:47

+0

Safari也會忽略選項。 – wilsotc 2015-09-01 14:05:05

0

輕微修改Mitali的響應。爲更加本地化的解決方案動態生成語言。

var lang= window.navigator.userLanguage || window.navigator.language; 

var date = new Date(); 

var options = { 
    weekday: "short", 
    year: "numeric", 
    month: "2-digit", 
    day: "numeric" 
}; 

date.toLocaleDateString(lang, options); 
1

,同時尋找一種方式來產生所有的瀏覽器本地化,但短日期,沒有任何額外的庫,只是一個簡單的調用格式服務器生成ISO日期發現這個線程。

我結合了holden321和mwrf的答案。存儲函數外部的格式,因爲它更方便,並存儲當前的區域設置格式,因爲它總是有用的。

該函數可以傳遞任何可以傳遞給日期構造函數以獲取有效日期以及靈活性的語言或格式。

您需要設置的格式列表和一對夫婦更多的事情第一:

var LOCALE_DATE_FORMATS = { 
    // as per mwrf's list 
    ... 
} 

var LANG = window.navigator.userLanguage || window.navigator.language; 

var LOCALE_DATE_FORMAT = LOCALE_DATE_FORMATS[LANG] || 'dd/MM/yyyy'; 

然後函數是:

function getLocalizedDate(o, options) 
{ 
    var res = ''; 
    var date = new Date(o);  

    if(o != null && !isNaN(date) && typeof(date.getFullYear) == 'function') 
    { 
     var d = date.getDate(); 
     var dd = d < 10 ? '0' + d : d; 
     var M = date.getMonth() + 1; 
     var MM = M < 10 ? '0' + M : M; 
     var yyyy = date.getFullYear(); 
     var yy = new String(yyyy).substring(2); 

     var format = LOCALE_DATE_FORMAT; 

     if(options && options.lang) 
      format = LOCALE_DATE_FORMATS[options.lang]; 
     else if(options && options.format) 
      format = options.format; 

     res = format 
      .replace(/dd/g, dd) 
      .replace(/d/g, d) 
      .replace(/MM/g, MM) 
      .replace(/M/g, M) 
      .replace(/yyyy/g, yyyy) 
      .replace(/yy/g, yy); 
    } 

    return res; 
} 

getLocalizedDate('2013-03-01T00:00:00', {lang:'sk-SK'}) = 1. 3. 2013

編輯:用電話沒有參數使用用戶的語言環境,當然:

getLocalizedDate('2013-03-01T00:00:00') = 01/03/2013(對我來說)

如果要擴展原型的粉絲,函數定義的第一行變成:

Date.prototype.getLocalized = function(options) 
{ 
    var date = this; 

調用,當然是這樣的:

new Date('2013-03-01T00:00:00').getLocalized({lang:'sk-SK'}) = 1. 3. 2013

編輯:再次,調用沒有參數使用用戶的區域設置:

new Date('2013-03-01T00:00:00').getLocalized() = 01/03/2013(對我來說)

0

嘗試使用Date.CultureInfo.formatPatterns.shortDate

+1

問題要求javascript,而不是C#。 – Izzy 2015-09-03 10:47:35

0

我相信你可以用這一個: 新的Date()toLocaleDateString()。可以接受區域參數: new Date()。toLocaleDateString(「en-us」); new Date()。toLocaleDateString(「he-il」);

我看到它支持鉻,IE瀏覽器,邊緣,雖然結果可能會有所不同,但它對我來說確實不錯。

3

如果您的問題有關<input type="date">場,這裏是腳本越來越申請value=""屬性:

(new Date()).toISOString().split('T')[0] 

可以使用Intl對象(ecma-402)獲得data-date-pattern=""

(new Intl.DateTimeFormat()).resolved.pattern // "M/d/y" for "en-US" in Google Chrome 

而且finnaly,以當前l10n格式化日期,data-date=""

(new Intl.DateTimeFormat()).format(new Date()); 

填充工具:https://github.com/andyearnshaw/Intl.js/issues/129

+0

是否在標準中解析了對象(新的Intl.DateTimeFormat())?它沒有記錄在MDN(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat)中,並且在Firefox中不起作用。 – vcarel 2016-07-13 08:59:25

+0

@vcarel https://github.com/tc39/ecma402/issues/21 – iegik 2016-07-14 10:56:54

3

https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat

The Intl.DateTimeFormat object is a constructor for objects that enable language sensitive date and time formatting.

var date = new Date(2014, 11, 31, 12, 30, 0); 

var formatter = new Intl.DateTimeFormat("ru"); 
console.log(formatter.format(date)); // 31.12.2014 

var formatter = new Intl.DateTimeFormat("en-US"); 

console.log(formatter.format(date)); // 31.12.2014 

您當前區域的格式:

console.log( new Intl.DateTimeFormat(Intl.DateTimeFormat().resolvedOptions().locale). 
format(new Date())) 
相關問題