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

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



답변

사용자 정의 구분 날짜 형식 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 % 글로벌 브라우저 시장 점유율)에서 지원되지 않습니다 .


답변

현재 허용되는 답변보다 서식을 약간 덜 제어해야하는 경우 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

참고 문헌 :


답변

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/


답변

빠르게 일반 자바 스크립트 사용을 사용하여 날짜를 포맷해야하는 경우 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


답변

글쎄, 오늘 날짜 는 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);
}

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


답변

맞춤 형식 지정 기능 :

고정 형식의 경우 간단한 기능으로 작업이 가능합니다. 다음 예제는 국제 형식 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));


답변

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

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

// formatted will be 'Jul 8, 2014'

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