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
표준 로캘 별 렌더링을 만드는 데 사용할 수 있습니다. locale
및 options
인수 응용 프로그램이 그 서식 규칙에 사용하는 언어를 지정하고 렌더링의 일부 사용자 정의를 허용 할 수 있습니다.
옵션 주요 예 :
- day : 요일을
나타냅니다.
가능한 값은 “숫자”, “2 자리”입니다. - 평일 : 평일을
나타냅니다.
가능한 값은 “좁은”, “짧은”, “긴”입니다. - 연도 : 연도를
나타냅니다.
가능한 값은 “숫자”, “2 자리”입니다. - 월 : 월을
나타냅니다.
가능한 값은 “숫자”, “2 자리”, “좁은”, “짧은”, “긴”입니다. - 시간 : 시간을
나타냅니다.
가능한 값은 “숫자”, “2 자리”입니다. - 분 : 분을
나타냅니다.
가능한 값은 “숫자”, “2 자리”입니다. - 초 :
초를 나타냅니다.
가능한 값은 “숫자”, 2 자리 숫자입니다.
이 모든 키는 선택 사항입니다. 요구 사항에 따라 옵션 값 수를 변경할 수 있으며 이는 각 날짜 시간 기간의 존재를 반영합니다.
참고 : 컨텐츠 옵션 만 구성하고 여전히 현재 로케일을 사용하려는 null
경우 첫 번째 매개 변수를 전달 하면 오류가 발생합니다. undefined
대신 사용하십시오 .
다른 언어의 경우 :
- “en-US”: 영어
- “hi-IN”: 힌디어
- “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
답변
빠르게 일반 자바 스크립트 사용을 사용하여 날짜를 포맷해야하는 경우 getDate
, getMonth + 1
, getFullYear
, getHours
및 getMinutes
:
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));