जावास्क्रिप्ट का उपयोग करके लोकेल शॉर्ट डेट फॉर्मेट प्राप्त करें


93

क्या वैसे भी हम जावास्क्रिप्ट को कंट्रोल पैनल में उपयोग किए जाने वाले शॉर्ट डेट फॉर्मेट -> क्षेत्रीय और भाषा सेटिंग्स का उपयोग करके जान सकते हैं?

मुझे पता है कि निम्नलिखित के संयोजन का उपयोग करके हम लोकेल लॉन्ग नाम प्रारूप प्राप्त कर सकते हैं

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

लेकिन जावास्क्रिप्ट में कोई सीधा कार्य नहीं है toLocaleShortDateString()

क्या उपयोगकर्ता सेटिंग क्या है यह जानने के लिए कोई स्क्रिप्ट उपलब्ध है?

धन्यवाद।


बस यह सुनिश्चित करने के लिए कि मैं समझता हूं: आप प्रारूप प्राप्त करने के लिए गर्म मतलब है? आपके द्वारा दिया गया "लापता फ़ंक्शन" नाम को भ्रमित करना (toLocaleShortDateString), शायद "getLocaleShortDateFormat" जैसा कुछ है?
अमिताभ डोबो

मैंने इस संबंधित प्रश्न के उत्तर को अपने उद्देश्यों के लिए अधिक उपयोगी पाया क्योंकि मैं सिर्फ एक आधा-सभ्य डिफ़ॉल्ट प्रदान करना चाहता हूं जिसके लिए क्लाइंटसाइड-केवल समाधान प्रस्तुत किए गए उपयोगी हैं।
Kirk Woll

जवाबों:


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

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

55
इंटरनेट पर यह सूची इतनी कठिन क्यों है !!
15

6
इस मामले को असंवेदनशील होने की जरूरत है, मेरी सफारी ने हमें लौटा दिया।
क्वेंटिनुक

2
स्थानीय प्रारूप अलग हो सकता है (कस्टम), ओएस पर निर्भर करता है
यानी

2
@Chexpir यूनिकोड सीएलडीआर परियोजना इस सूची का अंतिम स्रोत है, और github.com/unicode-cldr/cldr-dates-modern इसका थोड़ा अधिक उपभोग्य संस्करण है। फिर भी उपरोक्त आंकड़ों से बहुत दूर है। :)
पॉल आयरिश

4
@PaulIrish दोषपूर्ण (new Intl.DateTimeFormat()).resolved.patternप्रतीत होता है। मुझे मिल रहा है Uncaught TypeError: Cannot read property 'pattern' of undefinedऔर मैंने कुछ क्रोमियम बग को हटाने के बारे में देखा। .resolvedOptions()काम करता है, लेकिन पैटर्न को छोड़कर।
webXL

72

मुझे लगता है कि यह सबसे अच्छा तरीका है ...

    var date = new Date();

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

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

अधिक विकल्प और उनके उदाहरण ...।

Option          Values          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'

ध्यान दें कि IE (10 के रूप में) विकल्पों का सम्मान नहीं करता है, और जो भी आप निर्दिष्ट करते हैं वह महीने का नाम वापस कर देगा।
Whelkaholism

सामना में एफएफ नवीनतम संस्करण (25) एक ही व्यवहार प्रदर्शित करता है; ऐसा लगता है कि केवल Chrome विकल्पों का समर्थन करता है।
वेल्काहोलिज़्म

सफारी भी विकल्पों की अनदेखी करता है।
wilsotc 14

1
किसी के लिए भी अब यह समर्थन बहुत बेहतर है .. क्रोम और फ़ायरफ़ॉक्स दोनों ने कुछ समय के लिए विकल्पों का समर्थन किया है, IE11 आगे की ओर समर्थन करता है .. सफारी / वेबकिट अभी भी नहीं है
TygerKrash

यह बहुत अच्छी जानकारी है। यह बेहतर होगा यदि आप विकल्पों के लिए एक स्रोत से जुड़े।
फ्लिपडाउट

13
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
यह काम करता है, लेकिन यह दो अक्षर के भाषा कोड का ध्यान नहीं रखता है, कुछ ब्राउज़र भेजते हैं (मैं "दा-डीके" के बजाय "दा" देने के लिए मुझे फ़ायरफ़ॉक्स देने की पुष्टि कर रहा हूं)। मुझे लगता है कि मैं सिर्फ उन भाषाओं के लिए दो-अक्षर कोड जोड़ूंगा जिन्हें मैं समर्थन करना चाहता हूं, लेकिन वास्तव में अच्छा समाधान दो-अक्षर वाले कोड से कुछ भाषा संस्कृति नाम को खोजने और डिफ़ॉल्ट करना होगा।
एल्विस

हैलो @ Holden321 क्या मुझे स्थानीय समय मिल सकता है और dd / MM / yyyy प्रारूप में परिवर्तित हो सकता है? मैंने एक प्रश्न पूछा stackoverflow.com/questions/36226676/… लेकिन किसी ने मेरी मदद नहीं की।
अवनीश कुमार

1
यह ब्राउजर में काम करता है, लेकिन NodeJS में नहीं। NodeJS हमेशा उपरोक्त विभिन्न विकल्पों के साथ एक ही प्रारूप का उत्पादन करेगा।
डोनाटो

10

नहीं किया जा सकता।

क्रॉस-ब्राउज़र जावास्क्रिप्ट के पास ऐसे क्षेत्रीय अनुकूलन की पेशकश करने वाले प्लेटफार्मों पर उपयोगकर्ता द्वारा चयनित वास्तविक लघु तिथि प्रारूप का उपयोग करने का कोई तरीका नहीं है। इसके अलावा, जावास्क्रिप्ट में बहुत बड़े छेद हैं जहां किसी भी प्रकार के स्वरूपण का संबंध है। देखो कितनी परेशानी है जीरो-पेडिंग!

आप भाषा सेटिंग प्राप्त करने के लिए महान लंबाई पर जा सकते हैं, और विशिष्ट प्राप्त कर सकते हैं उस स्थान के लिए प्रारूप । यह बहुत काम है जब आपको यह भी नहीं पता कि यह सही स्थान है (मैं शर्त लगा सकता हूं कि अंतर्राष्ट्रीय भाषा हेडर अक्सर गलत हैं या पर्याप्त विशिष्ट नहीं हैं), या यदि उपयोगकर्ता ने प्रारूप को कुछ और के लिए अनुकूलित किया है।

आप क्लाइंट VBScript (जिसमें इन सभी क्षेत्रीय स्वरूपण क्रमपरिवर्तन के लिए फ़ंक्शन हैं) का उपयोग करने का प्रयास कर सकते हैं, लेकिन यह एक अच्छा विचार नहीं है क्योंकि यह एक मर रहा है (मृत?) IE- विशिष्ट तकनीक।

आप प्रारूप को खोदने के लिए जावा / फ्लैश / सिल्वरलाइट का उपयोग करके भी देख सकते हैं। यह अतिरिक्त काम का एक बड़ा हिस्सा भी है, लेकिन सफलता के लिए सबसे अच्छा मौका हो सकता है। ओवरहेड को कम करने के लिए आप सत्र के लिए इसे कैश करना चाहते हैं।

उम्मीद है कि HTML5 <time> तत्व i18n दिनांक / समय प्रदर्शन के लिए कुछ राहत प्रदान करेगा।


8

यदि <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

और फ़ाइनली, वर्तमान l10n में दिनांक प्रारूप करने के लिए data-date="":

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

पॉलीफ़िल: https://github.com/andyearnshaw/Intl.js/issues/129


1
क्या ऑब्जेक्ट (नया Intl.DateTimeFormat ()) मानकों में हल है? यह MDN ( developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… ) में प्रलेखित नहीं है और फ़ायरफ़ॉक्स में काम नहीं करता है।
vcarel

2
(new Intl.DateTimeFormat()).resolved.patternGoogle Chrome में एक त्रुटि उत्पन्न करता है। (new Intl.DateTimeFormat()).resolvedहै undefined। यह प्रारूप स्ट्रिंग प्राप्त करने के लिए एक समाधान नहीं है, लेकिन आप ((new Intl.DateTimeFormat()).format(new Date());स्वरूपित तिथि स्ट्रिंग प्राप्त करने के लिए उपयोग कर सकते हैं ।
कार्ल विल्बर

अभी के लिए, (new Intl.DateTimeFormat()).resolvedOptions()- आपको
14-30 बजे

@iegik resolvedOptionsकेवल मोटे तौर पर (कम से कम 80 क्रोम पर) डेटा का उत्पादन करता है, जैसे। वर्ष के प्रतिनिधित्व की लंबाई के बारे में जानकारी, दिनांक घटकों का क्रम, दिनांक घटकों के विभाजक सभी गायब हैं।
कोलैप्सार

7

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

Intl.DateTimeFormat ऑब्जेक्ट उन ऑब्जेक्ट्स के लिए एक कंस्ट्रक्टर है जो भाषा संवेदनशील दिनांक और समय स्वरूपण को सक्षम करते हैं।

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)); // 12/31/2014

आपके वर्तमान क्षेत्र का प्रारूप:

console.log(new Intl.DateTimeFormat(Intl.DateTimeFormat().resolvedOptions().locale).
format(new Date()))

5

मुझे ऐसा करने का कोई तरीका नहीं पता (आप भाषा प्राप्त कर सकते हैं) और उस स्थान से कटौती करने का प्रयास )।

मैंने कोशिश करने और ऐसा करने के लिए थोड़ा सा पकाने की कोशिश की (केवल एक स्थानीय के साथ फ़ायरफ़ॉक्स पर परीक्षण किया गया)। जब तक लघु तिथि स्ट्रिंग में अंक के रूप में तारीख शामिल है, तब तक काम करना चाहिए, इसलिए यह अरबी के लिए असफल हो सकता है। इसके अन्य कीड़े भी हो सकते हैं, मुझे सभी अलग-अलग स्थानों की ख़ासियत नहीं पता है, यह सिर्फ एक अवधारणा है ...

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 = लघु दिन (अर्थात जब संभव हो केवल एक अंक का उपयोग करें)
  • डीडी = लंबे दिन का प्रारूप (अर्थात दो अंक हमेशा)
  • mM / MM - महीनों तक समान

तो मेरे ब्राउज़र में, आपके द्वारा प्राप्त की जाने वाली शॉर्टडेटफॉर्म "MM / DD / YYYY" है।


मुझे मिलता है: "शहीद, डीडी डे एनेरो डे येय्य"
अल्वारो गोंजालेज

तब स्पष्ट रूप से मुझे इस पर कुछ और काम करने की आवश्यकता है :) (केवल फ़ायरफ़ॉक्स 3.5 / लिनक्स पर परीक्षण किया गया)
अमितय डोबो

क्रोम 38 X11 पर तारीख भाग में अपरिभाषित लौटते हुए
स्टील ब्रेन

3

यह ब्राउज़र के toLocaleDateString()कार्यान्वयन पर निर्भर करता है । उदाहरण के लिए क्रोम में आपको कुछ इस तरह मिलेगा:Tuesday, January DD, YYYY


3

मेरा मानना ​​है कि आप इसका उपयोग कर सकते हैं:

new Date().toLocaleDateString();

जो लोकेल के लिए पैरामीटर स्वीकार कर सकता है:

new Date().toLocaleDateString("en-us");
new Date().toLocaleDateString("he-il");

मैं देखता हूं कि यह क्रोम, IE, एज द्वारा समर्थित है, हालांकि परिणाम भिन्न हो सकते हैं यह मेरे लिए बहुत अच्छा काम करता है।


2

मिताली की प्रतिक्रिया में थोड़ा संशोधन। अधिक स्थानीयकृत समाधान के लिए भाषा को गतिशील रूप से उत्पन्न करने के लिए।

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);

2
new Date(YOUR_DATE_STRING).toLocaleDateString(navigator.language)

~ ऊपर के उत्तरों का संयोजन


1

कोई आसान तरीका नहीं है। यदि आप एक विश्वसनीय, क्रॉस-ब्राउज़र समाधान चाहते हैं, तो आपको संस्कृति द्वारा दिनांक, और समय प्रारूप स्ट्रिंग की लुकअप तालिका बनानी होगी। किसी तिथि को प्रारूपित करने के लिए, संबंधित प्रारूप स्ट्रिंग को पार्स करें, तिथि, दिन, महीने, वर्ष से संबंधित भागों को निकालें और उन्हें एक साथ जोड़ दें।

यह अनिवार्य रूप से Microsoft अपने AJAX पुस्तकालय के साथ करता है, जैसा कि @ नो के उत्तर में दिखाया गया है।


1

किसी भी अतिरिक्त पुस्तकालय के बिना सभी ब्राउज़रों में स्थानीयकृत लेकिन छोटी तिथियों को उत्पन्न करने का तरीका ढूंढते हुए इस धागे को मिला, सर्वर को आईएसओ तिथियों को प्रारूपित करने के लिए सिर्फ एक सरल कॉल।

मैं होल्डन321 और मोर्फ़ के उत्तरों के संयोजन के साथ गया। फ़ंक्शन के बाहरी स्वरूपों को संग्रहीत करना क्योंकि यह उस तरह से आसान है और वर्तमान स्थानीय प्रारूप को संग्रहीत करता है क्योंकि यह हमेशा उपयोगी होता है।

फ़ंक्शन को कुछ भी पारित किया जा सकता है जिसे एक वैध तिथि प्राप्त करने के लिए डेट कंस्ट्रक्टर को पास किया जा सकता है, और लचीलेपन के लिए एक भाषा या प्रारूप भी।

आपको पहले प्रारूप और कुछ और चीजों की सूची सेट करने की आवश्यकता है:

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(मेरे लिए)


-3

इसे इस्तेमाल करे:

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

इस फ़ंक्शन के सभी प्रारूप यहां देखे जा सकते हैं: http://pubs.opengroup.org/onlinepubs/007908799/xsh/strftime.html


4
इस विधि का उपयोग करने से मुझे इतना दर्द हुआ कि मुझे इसे फेंकना पड़ा। क्रोम इसे पहचान नहीं पाएगा।
केविनडेउस

मुझे पिछले टिप्पणीकारों से सहमत होना है: यदि आप कर सकते हैं तो इस समारोह से दूर रहें।
ADi3ek

-5

Date.CultureInfo.formatPatterns.shortDate का उपयोग करने का प्रयास करें


3
प्रश्न जावास्क्रिप्ट के लिए पूछता है, न कि C #।
इज़ी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.