JavaScript 날짜 형식을 지정하는 방법


2220

JavaScript에서 날짜 개체를 어떻게 형식화하여 인쇄 할 수 10-Aug-2010있습니까?


204
평소와 같이 : MONTH는 ZERO-INDEXED입니다! 그래서 1 월은 0이 아닙니다…
Christophe Roussy

12
또한 myDate.getDay()요일을 반환하지 않지만 요일 과 관련된 요일위치를 주의하십시오. 현재 요일을myDate.getDate() 반환합니다 .
Jimenemex

3
자바 스크립트에서 DateTimes를 형식화하려면 Intl.DateTimeFormat객체를 사용하십시오 . 내 게시물에 설명합니다 : Post . 나는하여 답변에 대한 온라인 솔루션을 만들 수 Intl.DateTimeFormat 온라인 체크인을
이만 Bahrampour

5
다음을 사용할 수 있습니다toLocaleDateString
onmyway133

12
URL을 표준화 된 객체로 가져 오는 데 자바 스크립트가 너무 오래 걸렸습니다. 쿼리 매개 변수 키를 뽑거나, 프로토콜을 잡고, 최상위 도메인을 잡을 수 있습니다. ES6 ES7을 만들 수는 있지만 여전히 표준 날짜를 입력 할 수는 없습니다. 2019 년 시간 포맷터 / 파서? 마치 "흠 .. 자바 스크립트를 사용하는 지구상에서 누가 정기적으로 시간과 날짜를 다룰 필요가
있을까?

답변:


1287

사용자 정의 구분 날짜 형식 DateTimeFormat의 경우 ECMAScript Internationalization API의 일부인 객체 에서 날짜 (또는 시간) 구성 요소를 가져온 다음 원하는 구분 기호로 문자열을 수동으로 만들어야합니다.

이를 위해 다음을 사용할 수 있습니다 DateTimeFormat#formatToParts.

const date = new Date('2010-08-05')
const dateTimeFormat = new Intl.DateTimeFormat('en', { year: 'numeric', month: 'short', day: '2-digit' }) 
const [{ value: month },,{ value: day },,{ value: year }] = dateTimeFormat .formatToParts(date ) 

console.log(`${day}-${month}-${year }`)
console.log(`${day}👠${month}👢${year}`) // just for fun

또한의 부분을 당겨 수있는 DateTimeFormat하나씩 사용 DateTimeFormat#format하지만,이 방법을 사용하면 월 2020대로 떨어져 있음을 유의 버그 는 분, 초에 앞에 0에 올 때 ECMAScript를 구현에서 (이 버그 위의 방법으로 우회합니다).

const d = new Date('2010-08-05')
const ye = new Intl.DateTimeFormat('en', { year: 'numeric' }).format(d)
const mo = new Intl.DateTimeFormat('en', { month: 'short' }).format(d)
const da = new Intl.DateTimeFormat('en', { day: '2-digit' }).format(d)

console.log(`${da}-${mo}-${ye}`)

날짜와 시간을 다룰 때 필드의 숨겨진 복잡성 때문에 라이브러리 (예 : moment.js , luxon )를 사용하는 것이 좋습니다 .

위의 솔루션에 사용 된 ECMAScript 국제화 API 는 IE10 ( 2020 년 2 월 0.03 % 글로벌 브라우저 시장 점유율)에서 지원되지 않습니다 .


368
대신 Moment.js 또는 Date.js와 같은 라이브러리를 사용하는 것이 좋습니다. 이 문제는 여러 번 해결되었습니다.
Benjamin Oakes

240
Date이것을하기 위해 객체에 함수를 포함시키지 않습니까?
Nayan

68
한 가지 중요한 점은 getMonth () 메소드가 0 기반의 월 인덱스를 리턴하므로 예를 들어 1 월은 0을 리턴하고 2 월은 1을 리턴합니다.
Marko

627
moment.js 2.9.0은 11.6k gzipped 이며이 예제는 211 바이트 gzipped입니다.
mrzmyr

26
절대로 document.write ()를 사용해서는 안됩니다. 거대한 보안 및 성능 문제.
매트 젠슨

2004

현재 허용되는 답변보다 서식을 약간 덜 제어해야하는 경우 Date#toLocaleDateString표준 로캘 별 렌더링을 만드는 데 사용할 수 있습니다. localeoptions인수 응용 프로그램이 그 서식 규칙에 사용하는 언어를 지정하고 렌더링의 일부 사용자 정의를 허용 할 수 있습니다.

옵션 주요 예 :

  1. day : 요일을
    나타냅니다.
    가능한 값은 "숫자", "2 자리"입니다.
  2. 평일 : 평일을
    나타냅니다.
    가능한 값은 "좁은", "짧은", "긴"입니다.
  3. 연도 : 연도를
    나타냅니다.
    가능한 값은 "숫자", "2 자리"입니다.
  4. 월 : 월을
    나타냅니다.
    가능한 값은 "숫자", "2 자리", "좁은", "짧은", "긴"입니다.
  5. 시간 : 시간을
    나타냅니다.
    가능한 값은 "숫자", "2 자리"입니다.
  6. 분 : 분을 나타냅니다.
    가능한 값은 "숫자", "2 자리"입니다.
  7. 초 :
    초를 나타냅니다.
    가능한 값은 "숫자", 2 자리 숫자입니다.

이 모든 키는 선택 사항입니다. 요구 사항에 따라 옵션 값 수를 변경할 수 있으며 이는 각 날짜 시간 기간의 존재를 반영합니다.

참고 : 컨텐츠 옵션 만 구성하고 여전히 현재 로케일을 사용하려는 null경우 첫 번째 매개 변수를 전달 하면 오류가 발생합니다. undefined대신 사용하십시오 .

다른 언어의 경우 :

  1. "en-US": 영어
  2. "hi-IN": 힌디어
  3. "ja-JP": 일본어

더 많은 언어 옵션을 사용할 수 있습니다.

예를 들어

var options = { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' };
var today  = new Date();

console.log(today.toLocaleDateString("en-US")); // 9/17/2016
console.log(today.toLocaleDateString("en-US", options)); // Saturday, September 17, 2016
console.log(today.toLocaleDateString("hi-IN", options)); // शनिवार, 17 सितंबर 2016

toLocaleString()동일한 목적으로이 방법을 사용할 수도 있습니다 . 유일한 차이점은이 기능은 옵션을 전달하지 않은 시간을 제공한다는 것입니다.

// Example
9/17/2016, 1:21:34 PM

참고 문헌 :


45
moment.js간단한 형식으로 거의 사용하려고했습니다 . 다행히도 추가 Google 검색을 수행했으며 이미이 작업을 수행하는 기본 API가 있음을 발견했습니다. 외부 종속성을 저장했습니다. 대박!
LeOn-Han Li

21
이 답변이 최고의 "현재"답변 인 것 같습니다. 또한 "hour12 : true"옵션을 사용하여 12 시간 대 24 시간 형식을 사용했습니다. 아마도 답변의 요약 목록에 추가해야 할 것입니다.
Doug Knudsen

14
이 답변에 대한 공감대를 얻지 못했습니다. 문제의 문제를 해결하지 못합니다. (2010 년 8 월 10 일처럼 보이는 날짜를 알려주세요). toLocaleDateString ()을 사용하는 것은 매우 어렵습니다. date.format 라이브러리가 더 나은 솔루션 인 것 같습니다 (적어도 노드 사용자에게는)
Iarwa1n

3
통과하는 경우 undefined매개 변수 Feel로 임의의 첫 번째 로케일로 대신 값을 전달할 수 있습니다 "default"MDN 워드 프로세서 당, 브라우저의 로케일 설정을 활용하는 developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/...
wbharding

3
@ Iarwa1n이 답변은 언급되지 않았지만 toLocaleDateString을 사용하여 원하는 부분 만 반환 할 수 있습니다. 아래에서 내 대답을 확인하십시오. date.toLocaleDateString("en-US", { day: 'numeric' }) + "-"+ date.toLocaleDateString("en-US", { month: 'short' }) + "-" + date.toLocaleDateString("en-US", { year: 'numeric' })제공해야 함16-Nov-2019
K Vij

609

date.format 라이브러리를 사용하십시오 .

var dateFormat = require('dateformat');
var now = new Date();
dateFormat(now, "dddd, mmmm dS, yyyy, h:MM:ss TT");

보고:

Saturday, June 9th, 2007, 5:46:21 PM 

npm의 날짜 형식

http://jsfiddle.net/phZr7/1/


4
이것은 더 긴 솔루션처럼 보일 수 있지만 날짜를 사용하는 사이트에서 압축되고 사용되는 것이 조금 더 나은 솔루션입니다!
RobertPitt

5
이 솔루션은 npm 패키지로도 제공됩니다 : npmjs.com/package/dateformat
David

19
위의 플러그인에는 14 가지 공개 문제가 있습니다. 심지어 나는 하나를 발견했다 :(
Amit Kumar Gupta

6
나는 얻는다require is not defined
Hooli

16
OP는 JS 솔루션을 요청했습니다
Luke Pring

523

빠르게 일반 자바 스크립트 사용을 사용하여 날짜를 포맷해야하는 경우 getDate, getMonth + 1, getFullYear, getHoursgetMinutes:

var d = new Date();

var datestring = d.getDate()  + "-" + (d.getMonth()+1) + "-" + d.getFullYear() + " " +
d.getHours() + ":" + d.getMinutes();

// 16-5-2015 9:50

또는 0으로 채워야하는 경우 :

var datestring = ("0" + d.getDate()).slice(-2) + "-" + ("0"+(d.getMonth()+1)).slice(-2) + "-" +
    d.getFullYear() + " " + ("0" + d.getHours()).slice(-2) + ":" + ("0" + d.getMinutes()).slice(-2);

// 16-05-2015 09:50

2018 년 3 월 23 일 월요일과 같은 형식을 얻는 방법을 알 수 있습니까 ??
Sachin HR

@SachinHR, 이전 답변 참조 : stackoverflow.com/a/34015511/4161032 . 는 toLocaleDateString()지역화 월 / 일 이름을 사용하여 날짜를 포맷 할 수 있습니다.
sebastian.i

12
당신은 또한 0으로 .toString().padStart(2, '0')
채울

1
@DmitryoN, 필요한 경우 연도는 같은 방식으로 채워질 수 있습니다.("000" + d.getFullYear()).slice(-4)
sebastian.i

4
@BennyJobigan String.padStart()ECMAScript 2017에서만 사용할 수 있음을 언급해야합니다 .
JHH

413

글쎄, 오늘 날짜 는 2012-06-23과 같은 MySQL 친화적 인 날짜 문자열 로 변환 하고 해당 문자열을 내 쿼리 중 하나에서 매개 변수로 사용하는 것이 었습니다. 내가 찾은 간단한 해결책은 다음과 같습니다.

var today = new Date().toISOString().slice(0, 10);

위의 솔루션은 시간대 오프셋을 고려 하지 않습니다 .

대신이 기능을 사용하는 것이 좋습니다.

function toJSONLocal (date) {
    var local = new Date(date);
    local.setMinutes(date.getMinutes() - date.getTimezoneOffset());
    return local.toJSON().slice(0, 10);
}

하루의 시작 / 끝에이 코드를 실행하는 경우 올바른 날짜를 제공합니다.


9
당신은 할 수있는 new Date(date + " UTC")시간대를 속여, 당신은 setMinutes 라인을 제거 할 수 있습니다. 사람, 자바 스크립트가 더러운
Vajk Hermecz

23
Y10K 호환 버전 : var today = new Date().toISOString().slice(0,-14):)
알렉스 샤퍼

22
또는 이와 같이new Date().toISOString().split('T')[0]
rofrol

4
new Date().toISOString().slice(0, 16).replace('T',' ')시간을 포함
Gerrie van Wyk

3
시간대 부족이 "오늘의 시작 / 종료"에 약간의 불편 함이 아니라고 언급하는 것입니다. 예를 들어, 호주에서는 날짜가 거의 오전 11시-거의 반나절까지 잘못되었을 수 있습니다!
Steve Bennett

229

맞춤 형식 지정 기능 :

고정 형식의 경우 간단한 기능으로 작업이 가능합니다. 다음 예제는 국제 형식 YYYY-MM-DD를 생성합니다.

function dateToYMD(date) {
    var d = date.getDate();
    var m = date.getMonth() + 1; //Month from 0 to 11
    var y = date.getFullYear();
    return '' + y + '-' + (m<=9 ? '0' + m : m) + '-' + (d <= 9 ? '0' + d : d);
}

console.log(dateToYMD(new Date(2017,10,5))); // Nov 5

OP 형식은 다음과 같이 생성 될 수 있습니다.

function dateToYMD(date) {
    var strArray=['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
    var d = date.getDate();
    var m = strArray[date.getMonth()];
    var y = date.getFullYear();
    return '' + (d <= 9 ? '0' + d : d) + '-' + m + '-' + y;
}
console.log(dateToYMD(new Date(2017,10,5))); // Nov 5

참고 : 그러나 JavaScript 표준 라이브러리를 확장하는 것은 좋지 않습니다 (예 :이 함수를 Date 프로토 타입에 추가).

보다 고급 기능은 형식 매개 변수를 기반으로 구성 가능한 출력을 생성 할 수 있습니다.

포맷팅 함수를 작성하는 것이 너무 길면, 그 주위에 많은 라이브러리가 있습니다. 다른 답변은 이미 열거했습니다. 그러나 의존성이 증가함에 따라 이에 대한 대응도 이루어지고 있습니다.

표준 ECMAScript 형식화 기능 :

최신 버전의 ECMAScript 이후 Date클래스에는 몇 가지 특정 형식화 기능이 있습니다.

toDateString : 구현에 따라 다르며 날짜 만 표시하십시오.

http://www.ecma-international.org/ecma-262/7.0/index.html#sec-date.prototype.todatestring

new Date().toDateString(); // e.g. "Fri Nov 11 2016"

toISOString : ISO 8601 날짜 및 시간을 표시합니다.

http://www.ecma-international.org/ecma-262/7.0/index.html#sec-date.prototype.toisostring

new Date().toISOString(); // e.g. "2016-11-21T08:00:00.000Z"

toJSON : JSON 용 문자열입니다.

http://www.ecma-international.org/ecma-262/7.0/index.html#sec-date.prototype.tojson

new Date().toJSON(); // e.g. "2016-11-21T08:00:00.000Z"

toLocaleDateString : 구현에 따라 다르며 로캘 형식의 날짜입니다.

http://www.ecma-international.org/ecma-262/7.0/index.html#sec-date.prototype.tolocaledatestring

new Date().toLocaleDateString(); // e.g. "21/11/2016"

toLocaleString : 구현에 따라 달라 지며 날짜 및 시간은 로캘 형식입니다.

http://www.ecma-international.org/ecma-262/7.0/index.html#sec-date.prototype.tolocalestring

new Date().toLocaleString(); // e.g. "21/11/2016, 08:00:00 AM"

toLocaleTimeString : 구현에 따라 다르며 로케일 형식의 시간입니다.

http://www.ecma-international.org/ecma-262/7.0/index.html#sec-date.prototype.tolocaletimestring

new Date().toLocaleTimeString(); // e.g. "08:00:00 AM"

toString : Date의 일반 toString입니다.

http://www.ecma-international.org/ecma-262/7.0/index.html#sec-date.prototype.tostring

new Date().toString(); // e.g. "Fri Nov 21 2016 08:00:00 GMT+0100 (W. Europe Standard Time)"

참고 : 해당 형식에서 맞춤 출력을 생성 할 수 있습니다.>

new Date().toISOString().slice(0,10); //return YYYY-MM-DD

스 니펫 예제 :

console.log("1) "+  new Date().toDateString());
console.log("2) "+  new Date().toISOString());
console.log("3) "+  new Date().toJSON());
console.log("4) "+  new Date().toLocaleDateString());
console.log("5) "+  new Date().toLocaleString());
console.log("6) "+  new Date().toLocaleTimeString());
console.log("7) "+  new Date().toString());
console.log("8) "+  new Date().toISOString().slice(0,10));


3
마지막에 감사합니다. HTML 날짜 입력의 날짜 값을 설정하는 데 유용합니다.
daCoda

new Date().toLocaleDateString()당신이 제공 mm/dd/yyyy되지 dd/mm/yyyy하나가 수정하시기 바랍니다.
Aarvy

1
@RajanVerma : toLocaleDateString은 로케일을 제공합니다. 미국에 있기 때문에 아마도 mm / dd / yyyy 일 것입니다. 여기서 날짜의 로캘은 dd / mm / yyyy입니다 (정확히 "로캘"의 포인트 임). 사양이 아니라 출력의 예이기 때문에 "eg"를 썼습니다.
Adrian Maire

177

프로젝트에서 이미 jQuery UI사용하고 있다면 다음과 같이 할 수 있습니다.

var formatted = $.datepicker.formatDate("M d, yy", new Date("2014-07-08T09:02:21.377"));

// formatted will be 'Jul 8, 2014'

재생할 날짜 선택기 날짜 형식 옵션은 여기에서 사용할 수 있습니다 .


13
내가 말했듯이-jQueryUI가 이미 프로젝트에서 사용 된 경우-datepicker 날짜 형식 지정 기능을 다시 사용하지 않는 이유는 무엇입니까? 안녕하세요, 왜 답변에 부정적인 투표를하는지 이해하지 못했습니다? 설명 해주십시오.
Dmitry Pavlov

7
누군가 날짜 형식 함수에 대해서만 jQuery UI를 포함 할 수 있거나 datepicker가 라이브러리의 선택적 부분 일 수 있지만 jQuery를 싫어하는 것이 유행 일 수 있습니다.
sennett

12
나는 누군가가 실수로 또는 감각이 없어서 할 수있는 모든 이상한 결정을 완전히 피하는 것이 불가능하다고 생각합니다.
Dmitry Pavlov

7
@ Sennett : jQuery를 싫어하는 것이 유행입니까? 그래서 바지를 반쯤 내려 놓고 다리를 반쯤 걸어 다니고 있습니다. jQuery없이 코드를 작성하는 것은 JavaScript 역사상 대부분의 시간과 비슷합니다.
Michael Scheper

5
어쨌든 이것은 도움이되고 전적으로 합리적인 답변입니다. 다시 말하면 웹 사이트의 70 %가 jQuery를 사용한다는 것입니다. 개발자의 종교적 신념으로 인해 격추되어서는 안됩니다.
Michael Scheper 2016 년

133

비표준 날짜 방법을 사용할 수 있다고 생각합니다.toLocaleFormat(formatString)

formatString :strftime() C 의 함수에서 예상하는 것과 동일한 형식의 형식 문자열

var today = new Date();
today.toLocaleFormat('%d-%b-%Y'); // 30-Dec-2011

참고 문헌 :


160
toLocaleFormat ()은 Firefox에서만 작동하는 것으로 보입니다. IE와 Chrome 모두 실패했습니다.
fitzgeraldsteele 2016 년

16
Chrome에는 .toLocaleString ( 'en') 메소드가 있습니다. 새로운 브라우저가이 developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…를
apocalypz


6
모든 사람이 구현할 수 있다면 이것이 최선의 해결책이 될 것입니다. 젠장
산타

6
@ 산타 : 참으로. 아마도 이것에 대해 Mozilla의 리드를 따르지 않을 정당한 이유가 있었지만 ES6조차도 표준 기능을 가지고 있지 않다는 사실은 개발자의 언어가 아니라 여전히 해커의 언어라는 것을 보여줍니다.
Michael Scheper

105

일반 자바 스크립트는 소규모 원타임 사용자에게 가장 적합합니다.

반면에 더 많은 데이트 자료가 필요하다면 MomentJS 는 훌륭한 솔루션입니다.

예를 들면 다음과 같습니다.

moment().format('YYYY-MM-DD HH:m:s');     // now() -> 2015-03-24 14:32:20
moment("20111031", "YYYYMMDD").fromNow(); // 3 years ago
moment("20120620", "YYYYMMDD").fromNow(); // 3 years ago
moment().startOf('day').fromNow();        // 11 hours ago
moment().endOf('day').fromNow();          // in 13 hours

2
언급해야 할 중요한 점 과 YYYY의 차이점을 알지 않는 한 사용 하지 마십시오 . stackoverflow.com/questions/15133549/…YYYYyyyy
Domin

@Domin Objective-C 또는 Swift와 같이 iOS의 NSDateFormatter에만 해당됩니다. 이 질문은 브라우저의 Javascript에 관한 것이며,이 답변은 MomentJS를 사용하는데, 여기서 YYYY(not yyyy)는 표준 연도이고 GGGG(not YYYY)은 ISO 주 기반 연도입니다.
마크 리드

2
순간은 @Gerry에서 100 % 더 이상 사용 되지 않습니다
Liam

97

최신 브라우저 (*) 에서는 다음을 수행 할 수 있습니다.

var today = new Date().toLocaleDateString('en-GB', {
    day : 'numeric',
    month : 'short',
    year : 'numeric'
}).split(' ').join('-');

오늘 실행 된 출력 (2016 년 1 월 24 일) :

'24-Jan-2016'

(*) MDN에 따르면 "현대 브라우저"는 Chrome 24 이상, Firefox 29 이상, Internet Explorer 11, Edge 12 이상, Opera 15 이상 및 Safari 야간 빌드를 의미 합니다.


이 기능이 지원되는지 여부를 확인하는 방법이 있습니까?
James Wierzba

@JamesWierzba : 이 polyfill을 사용할 수 있습니다 !
John Slegers

이것은 심지어 caniuse.com에 나열되어 있지 않습니다 : /
Charles Wood

51

date.js를 살펴 보십시오 . 예를 들어, 날짜를 다루는 데 도움이되는 많은 도우미가 추가됩니다.

var date = Date.parse('2010-08-10');
console.log(date.toString('dd-MMM-yyyy'));

시작하기 : http://www.datejs.com/2007/11/27/getting-started-with-datejs/


감사. 이것은 작은 설치 공간을 가진 매우 포괄적이고 완전한 라이브러리입니다.
mitcheljh

나는 현재 date.parse에서 숫자를 얻고 있다고 생각하지만 let date = new Date (fromString)에는 더 많은 기능이 있습니다. 불행히도 놀랍게도 toString은 전달 된 인수를 해석하지 않고 기본값을 표시하는 것 같습니다. NodeJS 11 이상을 사용하면 toDateString은 더 짧은 출력이지만 형식을 취하지 않습니다. 내가 본 것은 매우 복잡한 toLocaleDateString입니다
Master James

38

라이브러리와 Date 메소드를 사용하지 않고 한 줄로 요청 된 형식을 얻을 수 있습니다. 정규식 :

var d = (new Date()).toString().replace(/\S+\s(\S+)\s(\d+)\s(\d+)\s.*/,'$2-$1-$3');
// date will be formatted as "14-Oct-2015" (pass any date object in place of 'new Date()')

필자의 테스트에서 이것은 주요 브라우저 (Chrome, Safari, Firefox 및 IE)에서 안정적으로 작동합니다. @RobG가 지적했듯이 Date.prototype.toString ()의 출력은 구현에 따라 다르므로 출력을 테스트하여 확인하십시오. JavaScript 엔진에서 바로 작동합니다. 문자열 출력을 테스트하는 코드를 추가하고 정규식 바꾸기를 수행하기 전에 예상과 일치하는지 확인할 수도 있습니다.


console.log(new Date().toString().replace(/\S+\s(\S+)\s(\d+)\s(\d+)\s.*/,'$2-$1-$3'));
John

@ André-동의합니다. 이것이 내 코드라면 정규 표현식을 설명하고 입력 및 해당 출력의 예를 제공하는 주석과 함께 주석을 포함해야합니다.
JD Smith

시간 부분 (HH : mm : ss)은 어떻습니까?
unruledboy

@unruledboy var d = (새 날짜 ()). toString (). replace (/ \ S + \ s (\ S +) \ s (\ d +) \ s (\ d +) \ s (\ S +) \ s. * / , '$ 2- $ 1- $ 3 $ 4'); -또는 날짜 자체없이 시간 부분 만 가져 오려면 var d = (new Date ()). toString (). replace (/ \ S + \ s (\ S +) \ s (\ d +) \ s (\ d +) \ s (\ S +) \ s. * /, '$ 4');
JD Smith

37

@ Sébastien-대체 모든 브라우저 지원

new Date(parseInt(496407600)*1000).toLocaleDateString('de-DE', {
year: 'numeric',
month: '2-digit',
day: '2-digit'
}).replace(/\./g, '/');

설명서 : https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleDateString


5
.replace ()를 수행하는 대신 단순히 'en-GB'를 로캘로 사용할 수 있습니다. :)
Roberto14

1
이건 정말 좋은 예입니다 new Date().toLocaleDateString("en-EN", {month: "short", weekday: "short", day: "2-digit", year: "numeric"})반환"Wed, Sep 06, 2017"
피터 T.

37

OK , 우리는 Intl 이라는 것을 얻었습니다. 요즘 JavaScript로 날짜 형식을 지정하는 데 유용한 이라는 것이 있습니다.

아래와 같은 날짜 :

var date = '10/8/2010';

그리고 아래와 같이 new Date ()를 사용하여 Date로 변경하십시오.

date = new Date(date);

이제 아래와 같은 로케일 목록을 사용하여 원하는 방식으로 형식을 지정할 수 있습니다.

date = new Intl.DateTimeFormat('en-AU').format(date); // Australian date format: "8/10/2010" 


date = new Intl.DateTimeFormat('en-US').format(date); // USA date format: "10/8/2010" 


date = new Intl.DateTimeFormat('ar-EG').format(date);  // Arabic date format: "٨‏/١٠‏/٢٠١٠"

위에서 언급 한 형식을 정확히 원한다면 다음을 수행 할 수 있습니다.

date = new Date(Date.UTC(2010, 7, 10, 0, 0, 0));
var options = {year: "numeric", month: "short", day: "numeric"};
date = new Intl.DateTimeFormat("en-AU", options).format(date).replace(/\s/g, '-');

결과는 다음과 같습니다.

"10-Aug-2010"

자세한 내용은 Intl APIIntl.DateTimeFormat 설명서 를 참조하십시오 .


IE에서 지원되지 않음
Pants

그러나 IE11에 의해서만, IE10-은 이것이 존재하기 전에 수명이 다하여 이해할 수 있습니다. caniuse의 92 %, 꽤 좋은 caniuse.com/#search=datetimeformat
Tofandel

32

ECMAScript Edition 6 (ES6 / ES2015) 문자열 템플릿 사용 :

let d = new Date();
let formatted = `${d.getFullYear()}-${d.getMonth() + 1}-${d.getDate()}`;

구분자를 변경해야하는 경우 :

const delimiter = '/';
let formatted = [d.getFullYear(), d.getMonth() + 1, d.getDate()].join(delimiter);

30

패키지 솔루션 : Luxon

하나의 솔루션을 모두 사용하기 위해 Luxon ( Moment.js 의 현대화 된 버전)을 사용하는 것이 좋습니다. .

Luxon은 Moment.js 웹 사이트에서 호스팅되며 Moment.js 개발자가 개발했지만 Moment.js는 개발자가 해결하려고하지만 제한 할 수없는 한계가 있기 때문에 개발되었습니다.

설치하기 위해서:

npm install luxon 또는 yarn add luxon (다른 설치 방법에 대한 링크 방문)

예:

luxon.DateTime.fromISO('2010-08-10').toFormat('yyyy-LLL-dd');

수율 :

2010 년 8 월 10 일

수동 솔루션

Moment.js, Class DateTimeFormatter (Java)Class SimpleDateFormat (Java) 과 유사한 형식을 사용 하여 포괄적 인 솔루션을 구현했습니다.formatDate(date, patternStr) 하여 코드를 쉽게 읽고 수정할 수 . 날짜, 시간, AM / PM 등을 표시 할 수 있습니다. 자세한 예는 코드를 참조하십시오.

예:

formatDate(new Date(), 'EEEE, MMMM d, yyyy HH:mm:ss:S')

(formatDate 아래 코드 스 니펫에서 구현 됨)

수율 :

2018 년 10 월 12 일 금요일 18 : 11 : 23 : 445

"코드 조각 실행"을 클릭하여 코드를 시험해보십시오.

날짜 및 시간 패턴

yy= 2 자리 연도; yyyy= 일년

M= 숫자 월; MM= 2 자리 월; MMM= 짧은 달 이름; MMMM= 전체 월 이름

EEEE= 평일 이름; EEE= 짧은 요일 이름

d= 숫자 일; dd= 2 자리 일

h= 오전 / 오후; hh= 2 자리 시간 오전 / 오후; H= 시간; HH= 2 자리 시간

m= 분; mm= 2 자리 분; aaa= AM / PM

s= 초; ss= 2 자리 초

S = 밀리 초

var monthNames = [
  "January", "February", "March", "April", "May", "June", "July",
  "August", "September", "October", "November", "December"
];
var dayOfWeekNames = [
  "Sunday", "Monday", "Tuesday",
  "Wednesday", "Thursday", "Friday", "Saturday"
];
function formatDate(date, patternStr){
    if (!patternStr) {
        patternStr = 'M/d/yyyy';
    }
    var day = date.getDate(),
        month = date.getMonth(),
        year = date.getFullYear(),
        hour = date.getHours(),
        minute = date.getMinutes(),
        second = date.getSeconds(),
        miliseconds = date.getMilliseconds(),
        h = hour % 12,
        hh = twoDigitPad(h),
        HH = twoDigitPad(hour),
        mm = twoDigitPad(minute),
        ss = twoDigitPad(second),
        aaa = hour < 12 ? 'AM' : 'PM',
        EEEE = dayOfWeekNames[date.getDay()],
        EEE = EEEE.substr(0, 3),
        dd = twoDigitPad(day),
        M = month + 1,
        MM = twoDigitPad(M),
        MMMM = monthNames[month],
        MMM = MMMM.substr(0, 3),
        yyyy = year + "",
        yy = yyyy.substr(2, 2)
    ;
    // checks to see if month name will be used
    patternStr = patternStr
      .replace('hh', hh).replace('h', h)
      .replace('HH', HH).replace('H', hour)
      .replace('mm', mm).replace('m', minute)
      .replace('ss', ss).replace('s', second)
      .replace('S', miliseconds)
      .replace('dd', dd).replace('d', day)
      
      .replace('EEEE', EEEE).replace('EEE', EEE)
      .replace('yyyy', yyyy)
      .replace('yy', yy)
      .replace('aaa', aaa);
    if (patternStr.indexOf('MMM') > -1) {
        patternStr = patternStr
          .replace('MMMM', MMMM)
          .replace('MMM', MMM);
    }
    else {
        patternStr = patternStr
          .replace('MM', MM)
          .replace('M', M);
    }
    return patternStr;
}
function twoDigitPad(num) {
    return num < 10 ? "0" + num : num;
}
console.log(formatDate(new Date()));
console.log(formatDate(new Date(), 'dd-MMM-yyyy')); //OP's request
console.log(formatDate(new Date(), 'EEEE, MMMM d, yyyy HH:mm:ss.S aaa'));
console.log(formatDate(new Date(), 'EEE, MMM d, yyyy HH:mm'));
console.log(formatDate(new Date(), 'yyyy-MM-dd HH:mm:ss.S'));
console.log(formatDate(new Date(), 'M/dd/yyyy h:mmaaa'));

Luxon을 키워 준 @Gerry에게 감사합니다.


1
그건 그렇고, 귀찮은 SimpleDateFormat수업은 몇 년 전에 수업에 의해 대체되었습니다 java.time.format.DateTimeFormatter.
Basil Bourque

1
@BasilBourque가 언급했다. 둘 다 같은 패턴을 사용합니다. 나는 Java8 이전의 프로젝트에서 5 년 동안 일 했으므로 새로운 것들에 노출되지 않았다. 감사!
lewdev

거의 동일한 API로 대부분의 java.time 기능 을 얻으려면 Java 6 및 7 용 ThreeTen-Backport 프로젝트를 참조하십시오 .
Basil Bourque

@BasilBourque는 참조 해 주셔서 감사하지만 더 이상 해당 프로젝트에서 작업하지 않지만 올 때 분명히 명심할 것입니다.
lewdev

2
순간은 쓸모가 없습니다, luxon을 사용하십시오
Gerry

19

다음은 내가 작업중 인 프로젝트의 날짜 형식을 처리하기 위해 작성한 코드입니다. 그것은 내 필요에 맞게 PHP 날짜 형식화 기능을 모방합니다. 자유롭게 사용하십시오. 이미 존재하는 Date () 객체를 확장하고 있습니다. 이것은 가장 우아한 해결책은 아니지만 내 요구에 맞게 작동합니다.

var d = new Date(); 
d_string = d.format("m/d/Y h:i:s");

/**************************************
 * Date class extension
 * 
 */
    // Provide month names
    Date.prototype.getMonthName = function(){
        var month_names = [
                            'January',
                            'February',
                            'March',
                            'April',
                            'May',
                            'June',
                            'July',
                            'August',
                            'September',
                            'October',
                            'November',
                            'December'
                        ];

        return month_names[this.getMonth()];
    }

    // Provide month abbreviation
    Date.prototype.getMonthAbbr = function(){
        var month_abbrs = [
                            'Jan',
                            'Feb',
                            'Mar',
                            'Apr',
                            'May',
                            'Jun',
                            'Jul',
                            'Aug',
                            'Sep',
                            'Oct',
                            'Nov',
                            'Dec'
                        ];

        return month_abbrs[this.getMonth()];
    }

    // Provide full day of week name
    Date.prototype.getDayFull = function(){
        var days_full = [
                            'Sunday',
                            'Monday',
                            'Tuesday',
                            'Wednesday',
                            'Thursday',
                            'Friday',
                            'Saturday'
                        ];
        return days_full[this.getDay()];
    };

    // Provide full day of week name
    Date.prototype.getDayAbbr = function(){
        var days_abbr = [
                            'Sun',
                            'Mon',
                            'Tue',
                            'Wed',
                            'Thur',
                            'Fri',
                            'Sat'
                        ];
        return days_abbr[this.getDay()];
    };

    // Provide the day of year 1-365
    Date.prototype.getDayOfYear = function() {
        var onejan = new Date(this.getFullYear(),0,1);
        return Math.ceil((this - onejan) / 86400000);
    };

    // Provide the day suffix (st,nd,rd,th)
    Date.prototype.getDaySuffix = function() {
        var d = this.getDate();
        var sfx = ["th","st","nd","rd"];
        var val = d%100;

        return (sfx[(val-20)%10] || sfx[val] || sfx[0]);
    };

    // Provide Week of Year
    Date.prototype.getWeekOfYear = function() {
        var onejan = new Date(this.getFullYear(),0,1);
        return Math.ceil((((this - onejan) / 86400000) + onejan.getDay()+1)/7);
    } 

    // Provide if it is a leap year or not
    Date.prototype.isLeapYear = function(){
        var yr = this.getFullYear();

        if ((parseInt(yr)%4) == 0){
            if (parseInt(yr)%100 == 0){
                if (parseInt(yr)%400 != 0){
                    return false;
                }
                if (parseInt(yr)%400 == 0){
                    return true;
                }
            }
            if (parseInt(yr)%100 != 0){
                return true;
            }
        }
        if ((parseInt(yr)%4) != 0){
            return false;
        } 
    };

    // Provide Number of Days in a given month
    Date.prototype.getMonthDayCount = function() {
        var month_day_counts = [
                                    31,
                                    this.isLeapYear() ? 29 : 28,
                                    31,
                                    30,
                                    31,
                                    30,
                                    31,
                                    31,
                                    30,
                                    31,
                                    30,
                                    31
                                ];

        return month_day_counts[this.getMonth()];
    } 

    // format provided date into this.format format
    Date.prototype.format = function(dateFormat){
        // break apart format string into array of characters
        dateFormat = dateFormat.split("");

        var date = this.getDate(),
            month = this.getMonth(),
            hours = this.getHours(),
            minutes = this.getMinutes(),
            seconds = this.getSeconds();
        // get all date properties ( based on PHP date object functionality )
        var date_props = {
            d: date < 10 ? '0'+date : date,
            D: this.getDayAbbr(),
            j: this.getDate(),
            l: this.getDayFull(),
            S: this.getDaySuffix(),
            w: this.getDay(),
            z: this.getDayOfYear(),
            W: this.getWeekOfYear(),
            F: this.getMonthName(),
            m: month < 10 ? '0'+(month+1) : month+1,
            M: this.getMonthAbbr(),
            n: month+1,
            t: this.getMonthDayCount(),
            L: this.isLeapYear() ? '1' : '0',
            Y: this.getFullYear(),
            y: this.getFullYear()+''.substring(2,4),
            a: hours > 12 ? 'pm' : 'am',
            A: hours > 12 ? 'PM' : 'AM',
            g: hours % 12 > 0 ? hours % 12 : 12,
            G: hours > 0 ? hours : "12",
            h: hours % 12 > 0 ? hours % 12 : 12,
            H: hours,
            i: minutes < 10 ? '0' + minutes : minutes,
            s: seconds < 10 ? '0' + seconds : seconds           
        };

        // loop through format array of characters and add matching data else add the format character (:,/, etc.)
        var date_string = "";
        for(var i=0;i<dateFormat.length;i++){
            var f = dateFormat[i];
            if(f.match(/[a-zA-Z]/g)){
                date_string += date_props[f] ? date_props[f] : '';
            } else {
                date_string += f;
            }
        }

        return date_string;
    };
/*
 *
 * END - Date class extension
 * 
 ************************************/

18

외부 라이브러리를 사용하지 않는 JavaScript 솔루션 :

var now = new Date()
months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
var formattedDate = now.getDate() + "-" + months[now.getMonth()] + "-" + now.getFullYear()
alert(formattedDate)


15

코드에서 jQuery UI를 사용하는 경우라는 내장 함수가 formatDate()있습니다. 오늘 날짜 형식을 지정하는 데이 방법을 사용하고 있습니다.

var testdate = Date();
testdate = $.datepicker.formatDate( "d-M-yy",new Date(testdate));
alert(testdate);

jQuery UI 문서에서 다른 날짜 형식의 예제를 볼 수 있습니다 .


15

우리는 이것에 대한 많은 솔루션을 가지고 있지만 그중 가장 좋은 것은 Moment.js라고 생각합니다. 따라서 개인적으로 날짜 및 시간 작업에 Moment.js를 사용하는 것이 좋습니다.

console.log(moment().format('DD-MMM-YYYY'));
<script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.14.1/moment.min.js"></script>


왜 jquery를 포함하고 있습니까?
Ced

1
죄송합니다. 필요하지 않습니다. 감사합니다 @ Ced
Vijay Maheriya

moment.js에 날짜를 제공하는 방법은 무엇입니까? 항상 현재 시간이 걸린다고 생각합니다.
Dave Ranjan

1
@DaveRanjan 사용자 정의 날짜를 변환해야한다고 생각합니다. 따라서 이것을 사용하십시오 : console.log (moment ( '2016-08-10'). format ( 'DD-MMM-YYYY'));
Vijay Maheriya

그래, 나중에 알아 냈어 감사합니다 :)
데이브 란잔

15

JavaScript에서 DateTimes를 형식화하는 데 유용하고 유연한 방법은 Intl.DateTimeFormat다음과 같습니다.

var date = new Date();
var options = { year: 'numeric', month: 'short', day: '2-digit'};
var _resultDate = new Intl.DateTimeFormat('en-GB', options).format(date);
// The _resultDate is: "12 Oct 2017"
// Replace all spaces with - and then log it.
console.log(_resultDate.replace(/ /g,'-'));

결과 : "12-Oct-2017"

옵션 인수를 사용하여 날짜 및 시간 형식을 사용자 정의 할 수 있습니다.

Intl.DateTimeFormat객체는 언어 인식 날짜 및 시간 서식을 가능 객체의 생성자입니다.

통사론

new Intl.DateTimeFormat([locales[, options]])
Intl.DateTimeFormat.call(this[, locales[, options]])

매개 변수

로케일

선택 과목. BCP 47 언어 태그가있는 문자열 또는 이러한 문자열의 배열 locales 인수의 일반적인 형식과 해석에 대해서는 Intl 페이지를 참조하십시오. 다음과 같은 유니 코드 확장 키가 허용됩니다.

nu
Numbering system. Possible values include: "arab", "arabext", "bali", "beng", "deva", "fullwide", "gujr", "guru", "hanidec", "khmr", "knda", "laoo", "latn", "limb", "mlym", "mong", "mymr", "orya", "tamldec", "telu", "thai", "tibt".
ca
Calendar. Possible values include: "buddhist", "chinese", "coptic", "ethioaa", "ethiopic", "gregory", "hebrew", "indian", "islamic", "islamicc", "iso8601", "japanese", "persian", "roc".

옵션

선택 과목. 다음 속성 중 일부 또는 전부를 가진 객체 :

로케일

사용할 로케일 일치 알고리즘. 가능한 값은 "lookup""best fit"; 기본값은 "best fit"입니다. 이 옵션에 대한 자세한 내용은 Intl 페이지를 참조하십시오.

타임 존

사용할 시간대 구현해야하는 유일한 가치 구현은 "UTC"; 기본값은 런타임의 기본 시간대입니다. 구현도 같은 IANA 시간대 데이터베이스의 시간대 이름을 인식 할 수 있습니다 "Asia/Shanghai", "Asia/Kolkata", "America/New_York".

시간 12

12 시간을 사용할지 여부 (24 시간과 반대) 가능한 값은 truefalse; 기본값은 로케일에 따라 다릅니다.

formatMatcher

사용할 형식 일치 알고리즘입니다. 가능한 값은 "basic""best fit"; 기본값은 "best fit"입니다. 이 속성의 사용에 대한 정보는 다음 단락을 참조하십시오.

다음 특성은 형식화 된 출력 및 원하는 표현에 사용할 날짜-시간 구성 요소를 설명합니다. 최소한 다음 하위 집합을 지원하려면 구현이 필요합니다.

weekday, year, month, day, hour, minute, second
weekday, year, month, day
year, month, day
year, month
month, day
hour, minute, second
hour, minute

구현은 다른 부분 집합을 지원할 수 있으며 요청은 사용 가능한 모든 부분 집합 표현 조합에 대해 협상되어 가장 일치하는 것을 찾습니다. 이 협상에 두 가지 알고리즘을 사용할 수 있으며 formatMatcher 속성에 의해 선택됩니다. 완전히 지정된 "basic"알고리즘과 구현 종속 " 최 적합"알고리즘.

주일

요일을 나타냅니다. 가능한 값은 "narrow", "short", "long".

연대

시대의 표현. 가능한 값은 "narrow", "short", "long".

연도를 나타냅니다. 가능한 값은 "numeric", "2-digit"입니다.

월을 나타냅니다. 가능한 값은 "numeric", "2-digit", "narrow", "short", "long".

오늘의 표현. 가능한 값은 "numeric", "2-digit"입니다.

시간을 나타냅니다. 가능한 값은 "numeric", "2-digit"입니다.

분을 나타냅니다. 가능한 값은 "numeric", "2-digit"입니다.

둘째

두 번째 표현. 가능한 값은 "numeric", "2-digit"입니다.

timeZoneName

시간대 이름을 나타냅니다. 가능한 값은 "short", "long"입니다. 각 날짜-시간 구성 요소 속성의 기본값은 정의되어 있지 않지만 모든 구성 요소 속성이 정의되어 있지 않으면 년, 월 및 일이로 간주됩니다 "numeric".

온라인 확인

자세한 내용은


15

이 문제에 도움이 될 수 있습니다.

var d = new Date();

var options = {   
    day: 'numeric',
    month: 'long', 
    year: 'numeric'
};

console.log(d.toLocaleDateString('en-ZA', options));

형식을 찾을 날짜


2
또는 d.toLocaleDateString('en-US', options);미국에 거주하는 경우
BishopZ

이것이 나의 해결책이었다. 감사합니다.
Steven Rogers

13

이것이 내 npm 플러그인에 대해 구현 한 방법입니다

var monthNames = [
  "January", "February", "March",
  "April", "May", "June", "July",
  "August", "September", "October",
  "November", "December"
];

var Days = [
  "Sunday", "Monday", "Tuesday", "Wednesday",
  "Thursday", "Friday", "Saturday"
];

var formatDate = function(dt,format){
  format = format.replace('ss', pad(dt.getSeconds(),2));
  format = format.replace('s', dt.getSeconds());
  format = format.replace('dd', pad(dt.getDate(),2));
  format = format.replace('d', dt.getDate());
  format = format.replace('mm', pad(dt.getMinutes(),2));
  format = format.replace('m', dt.getMinutes());
  format = format.replace('MMMM', monthNames[dt.getMonth()]);
  format = format.replace('MMM', monthNames[dt.getMonth()].substring(0,3));
  format = format.replace('MM', pad(dt.getMonth()+1,2));
  format = format.replace(/M(?![ao])/, dt.getMonth()+1);
  format = format.replace('DD', Days[dt.getDay()]);
  format = format.replace(/D(?!e)/, Days[dt.getDay()].substring(0,3));
  format = format.replace('yyyy', dt.getFullYear());
  format = format.replace('YYYY', dt.getFullYear());
  format = format.replace('yy', (dt.getFullYear()+"").substring(2));
  format = format.replace('YY', (dt.getFullYear()+"").substring(2));
  format = format.replace('HH', pad(dt.getHours(),2));
  format = format.replace('H', dt.getHours());
  return format;
}

pad = function(n, width, z) {
  z = z || '0';
  n = n + '';
  return n.length >= width ? n : new Array(width - n.length + 1).join(z) + n;
}

어떤 패키지를 언급하고 있습니까?
lbrahim

버그가 있습니다. 월 이름이 먼저 바뀐 다음 달 이름도 바뀝니다. 예를 March들어이 3arch코드와 함께 됩니다 .
ntaso

1
에 대한 변경 선 'M'format = format.replace("M(?!M)", (dt.getMonth()+1).toString());와 함께 선 위에 넣어'MMMM'
ntaso


8

Sugar.js는 Date.format 메소드를 포함하여 Date 객체에 대한 확장 성이 뛰어납니다 .

설명서의 예 :

Date.create().format('{Weekday} {Month} {dd}, {yyyy}');

Date.create().format('{12hr}:{mm}{tt}')

8

복사, 붙여 넣기 및 채택을위한 매우 간단한 ES6 솔루션을 찾고있는 사람은 다음을 수행하십시오.

const dateToString = d => `${d.getFullYear()}-${('00' + (d.getMonth() + 1)).slice(-2)}-${('00' + d.getDate()).slice(-2)}` 

// how to use:
const myDate = new Date(Date.parse('04 Dec 1995 00:12:00 GMT'))
console.log(dateToString(myDate)) // 1995-12-04


8

2019 년 현재 특정 부분 만 반환하도록 LocaleDateString을 얻을 수 있으며 원하는대로 결합 할 수 있습니다.

var date = new Date();

console.log(date.toLocaleDateString("en-US", { day: 'numeric' }) 
            + "-"+ date.toLocaleDateString("en-US", { month: 'short' })
            + "-" + date.toLocaleDateString("en-US", { year: 'numeric' }) );

> 16-Nov-2019

console.log(date.toLocaleDateString("en-US", { month: 'long' }) 
            + " " + date.toLocaleDateString("en-US", { day: 'numeric' }) 
            + ", " + date.toLocaleDateString("en-US", { year: 'numeric' }) );

> November 16, 2019

8

당신은 DayJs보아야합니다 그것은 momentJs 의 리메이크이지만 모듈 형 아키텍처는 매우 가볍습니다.

동일한 최신 API를 사용하여 Moment.js에 대한 빠른 2kB 대안

Day.js는 Moment.js 호환 API를 사용하여 최신 브라우저의 날짜 및 시간을 구문 분석, 유효성 검사, 조작 및 표시하는 미니멀리즘 JavaScript 라이브러리입니다. Moment.js를 사용하는 경우 Day.js를 사용하는 방법을 이미 알고 있습니다.

var date = Date.now();
const formatedDate = dayjs(date).format("YYYY-MM-DD")
console.log(formatedDate);
<script src="https://cdnjs.cloudflare.com/ajax/libs/dayjs/1.8.16/dayjs.min.js" crossorigin="anonymous"></script>


7

"2010 년 8 월 10 일"을 구하려면 다음을 시도하십시오.

var date = new Date('2010-08-10 00:00:00');
date = date.toLocaleDateString(undefined, {day:'2-digit'}) + '-' + date.toLocaleDateString(undefined, {month:'short'}) + '-' + date.toLocaleDateString(undefined, {year:'numeric'})

브라우저 지원은 toLocaleDateString을 참조하십시오 .


"-"가 필요하지 않았습니다. 여기에는 시간, 날짜 및 시간대가 포함 된 더 짧은 버전이 있습니다! date = new 날짜 (); date.toLocaleDateString (정의되지 않음, {일 : '2 자리', 월 : '짧은', 연도 : '숫자', 시간 : '숫자', 분 : '숫자', timeZoneName : 'short'}); :)
varun
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.