자바 스크립트를 사용하여 로케일 간단한 날짜 형식 가져 오기


93

어쨌든 제어판-> 지역 및 언어 설정에서 사용되는 간단한 날짜 형식을 JavaScript를 사용하여 알 수 있습니까?

다음 조합을 사용하여 로케일 긴 이름 형식을 얻을 수 있음을 알고 있습니다.

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

그러나 JavaScript에는 toLocaleShortDateString().

사용자 설정이 무엇인지 알아내는 데 사용할 수있는 스크립트가 있습니까?

감사.


내가 이해했는지 확인하기 위해 : 형식 자체를 얻는 것이 뜨겁다는 뜻입니까? "누락 된 함수"이름이 오해의 소지가 있기 때문에 (toLocaleShortDateString), 아마도 "getLocaleShortDateFormat"과 같은 것일까 요?
Amitay Dobo 2010 년

여기에 제시된 클라이언트 전용 솔루션이 유용한 절반 정도의 기본값을 제공하고 싶기 때문에이 관련 질문에 대한 답변이 내 목적에 더 도움 이된다는 것을 알았습니다 .
Kirk Woll 2014 년

답변:


185
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";
}

56
이 목록은 인터넷에서 찾기가 왜 그렇게 어려운가 !!
sidonaldson 2014

6
대소 문자를 구분하지 않으면 Safari가 en-us를 반환합니다.
QuentinUK

2
현지 형식 (사용자 정의) 다를 수 있습니다, OS에 따라 달라집니다
iegik

2
@Chexpir 유니 코드 CLDR 프로젝트는이 목록의 궁극적 인 소스이며 github.com/unicode-cldr/cldr-dates-modern 은 약간 더 소비 가능한 버전입니다. 여전히 위의 데이터와는 거리가 멀다. :)
Paul Irish

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

얼굴 FF 최신 버전 (25)은 동일한 동작을 나타냅니다. Chrome 만 옵션을 지원하는 것 같습니다.
Whelkaholism

Safari는 옵션도 무시합니다.
wilsotc

1
이 지금 지원을 치는 사람을 위해 더 나은 .. 크롬 및 파이어 폭스 모두 약간의 시간에 대한 옵션을 지원했다되고, IE11 이후 지원은 .. 사파리 / 웹킷은 아직하지 않습니다
TygerKrash

이것은 훌륭한 정보입니다. 옵션 소스에 연결하면 더 좋을 것입니다.
flipdoubt

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
이것은 작동하지만 불행히도 일부 브라우저가 보내는 두 글자 언어 코드를 처리하지 않습니다 (예 : "da-DK"대신 "da"를 제공하는 파이어 폭스를 참조합니다). 지원하려는 언어에 대해 두 글자 코드를 추가 할 것 같지만 정말 멋진 해결책은 두 글자 코드에서 일부 언어 문화 이름을 찾아 기본값으로 설정하는 것입니다.
Alvis 2013

안녕하세요 @ holden321 현지 시간을 가져와 dd / MM / yyyy 형식으로 변환 할 수 있습니까? 나는 stackoverflow.com/questions/36226676/… 질문을 했지만 아무도 나를 도와주지 않습니다.
Avanish Kumar 16. 03. 26.

1
이것은 브라우저에서 작동하지만 NodeJS에서는 작동하지 않습니다. NodeJS는 위의 다른 옵션을 사용하여 항상 동일한 형식을 생성합니다.
Donato

10

할 수 없습니다.

브라우저 간 JavaScript는 이러한 지역 사용자 정의를 제공하는 플랫폼에서 사용자가 선택한 실제 짧은 날짜 형식을 사용할 수 없습니다. 게다가, 자바 스크립트는 어떤 종류의 서식과 관련하여 큰 구멍이 있습니다. 제로 패딩이 얼마나 번거로운 지보세요!

언어 설정을 얻고 해당 로케일에 대한 일반적인 형식 을 얻기 위해 많은 시간을 할애 할 수 있습니다 . 올바른 로케일인지 알지 못하거나 (국제 언어 헤더가 종종 정확하지 않거나 충분히 구체적이지 않은 경우) 또는 사용자가 형식을 다른 것으로 사용자 정의한 경우에는 많은 작업이 수행됩니다.

클라이언트 VBScript (이러한 모든 지역 서식 순열에 대한 기능이 있음)를 사용해 볼 수 있지만 죽어가는 (죽은?) IE 특정 기술이기 때문에 좋은 생각이 아닙니다.

Java / Flash / Silverlight를 사용하여 형식을 파헤칠 수도 있습니다. 이것은 또한 많은 추가 작업이지만 성공 가능성이 가장 높을 수 있습니다. 오버 헤드를 최소화하기 위해 세션에 대해 캐시를 원할 것입니다.

HTML5 <time> 요소가 i18n 날짜 / 시간 표시에 약간의 완화를 제공하기를 바랍니다.


8

<input type="date">필드에 대한 질문이 있으면 여기에 파일 value=""속성 을 얻는 스크립트가 있습니다 .

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

당신이 사용할 수있는 국제의 객체 ( 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());

Polyfill : https://github.com/andyearnshaw/Intl.js/issues/129


1
객체 (new Intl.DateTimeFormat ())가 표준에서 해결 되었습니까? MDN ( developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… )에 문서화되어 있지 않으며 Firefox에서 작동하지 않습니다.
vcarel

2
(new Intl.DateTimeFormat()).resolved.patternChrome에서 오류를 생성합니다. (new Intl.DateTimeFormat()).resolved입니다 undefined. 이것은 형식 문자열을 얻는 해결책은 아니지만 ((new Intl.DateTimeFormat()).format(new Date());형식화 된 날짜 문자열을 얻는 데 사용할 수 있습니다 .
Karl Wilbur

지금은 (new Intl.DateTimeFormat()).resolvedOptions()-형식 개체를 제공합니다
iegik

@iegik resolvedOptions는 거친 데이터 만 생성합니다 (적어도 Chrome 80에서는). 연도 표시 길이, 날짜 구성 요소 순서, 날짜 구성 요소 구분 기호에 대한 정보가 모두 누락되었습니다.
collapsar

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

그렇게하는 방법을 모르겠습니다 ( 언어를 얻을 수 있습니다 로케일을 빼려고 ).

나는 그것을 시도하고 수행하기 위해 약간의 요리를 시도했습니다 (하나의 로케일로 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 / MM-몇 달 동안 동일

내 브라우저에서 얻을 수있는 shortDateformat은 "MM / DD / YYYY"입니다.


"martes, DD de enero de YYYY"
Álvaro González

그럼 분명히 더 많은 작업이 필요합니다 :) (Firefox 3.5 / Linux에서만 테스트 됨)
Amitay Dobo

크롬 38 X11의 날짜 부분에 undefined 반환
Steel Brain

3

이것은 브라우저의 toLocaleDateString()구현 에 따라 다릅니다 . 예를 들어 크롬에서는 다음과 같은 결과를 얻을 수 있습니다.Tuesday, January DD, YYYY


3

나는 이것을 사용할 수 있다고 믿습니다.

new Date().toLocaleDateString();

로케일에 대한 매개 변수를 허용 할 수 있습니다.

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

결과가 다를 수 있지만 크롬, IE, 엣지에서 지원된다는 것을 알았습니다.


2

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

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

~ 위의 답변 조합


1

쉬운 방법은 없습니다. 신뢰할 수있는 브라우저 간 솔루션을 원한다면 문화별로 날짜 및 시간 형식 문자열의 조회 테이블을 작성해야합니다. 날짜를 형식화하려면 해당 형식 문자열을 구문 분석하고 날짜에서 관련 부분 (예 : 일, 월, 연도)을 추출하고 함께 추가하십시오.

이것은 @no의 답변에서 볼 수 있듯이 본질적으로 Microsoft가 AJAX 라이브러리로 수행하는 작업입니다.


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(나를 위해)



-5

Date.CultureInfo.formatPatterns.shortDate를 사용해보십시오.


3
질문은 C #이 아닌 자바 스크립트를 요구합니다.
Izzy
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.