답변:
자주 사용하는 변경된 코드 조각 :
Date.prototype.yyyymmdd = function() {
var mm = this.getMonth() + 1; // getMonth() is zero-based
var dd = this.getDate();
return [this.getFullYear(),
(mm>9 ? '' : '0') + mm,
(dd>9 ? '' : '0') + dd
].join('');
};
var date = new Date();
date.yyyymmdd();
[this.getFullYear(), mm<10 ? '0'+ mm: mm, dd<10 ? '0'+ dd : dd].join('.')
var mm = (this.getMonth() + 101).toString().substring(1, 3)
프로토 타입을 추가하는 것을 좋아하지 않았습니다. 대안은 다음과 같습니다.
var rightNow = new Date();
var res = rightNow.toISOString().slice(0,10).replace(/-/g,"");
<!-- Next line is for code snippet output only -->
document.body.innerHTML += res;
rightNow
주위에 변수 가 필요하지 않으면 랩을 new Date
한 줄로 (new Date()).toISOString().slice(0,10).replace(/-/g,"")
YYYYMMDDHHmmSSsss
. 그래서 나는 이렇게했다 var ds = (new Date()).toISOString().replace(/[^0-9]/g, "");
. 매우 간단하지만 캡슐화되어야합니다.
rightNow.setMinutes(rightNow.getMinutes() - rightNow.getTimezoneOffset()); rightNow.toISOString().slice(0,10)
당신은 toISOString
기능을 사용할 수 있습니다 :
var today = new Date();
today.toISOString().substring(0, 10);
"yyyy-mm-dd"형식을 제공합니다.
var date = new Date();
var formattedDate = moment(date).format('YYYYMMDD');
var formattedDate = moment().format('YYYYMMDD');
순수한 JS 솔루션이 필요하지 않은 경우 jQuery UI를 사용하여 다음과 같은 작업을 수행 할 수 있습니다.
$.datepicker.formatDate('yymmdd', new Date());
나는 보통 너무 많은 라이브러리를 가져오고 싶지 않습니다. 그러나 jQuery UI는 매우 유용하므로 프로젝트의 다른 곳에서 사용할 수 있습니다.
더 많은 예제를 보려면 http://api.jqueryui.com/datepicker/ 를 방문하십시오.
이것은 YYYY-MM-DD
오늘 날짜 문자열 을 만드는 데 사용할 수있는 한 줄의 코드입니다 .
var d = new Date().toISOString().slice(0,10);
toISOString()
됩니다.
new Date('Jun 5 2016').
toLocaleString('en-us', {year: 'numeric', month: '2-digit', day: '2-digit'}).
replace(/(\d+)\/(\d+)\/(\d+)/, '$3-$1-$2');
// => '2016-06-05'
new Date('Sun Mar 31 2019 00:00:00.000').toLocaleString('en-us', {year: 'numeric', month: '2-digit', day: '2-digit'}).replace(/(\d+)\/(\d+)\/(\d+)/, '$3-$1-$2');
oo의 답변 외에도 논리 연산을 반환에서 분리하고 대신 변수에 삼항으로 넣는 것이 좋습니다.
또한 concat()
변수를 안전하게 연결 하는 데 사용
Date.prototype.yyyymmdd = function() {
var yyyy = this.getFullYear();
var mm = this.getMonth() < 9 ? "0" + (this.getMonth() + 1) : (this.getMonth() + 1); // getMonth() is zero-based
var dd = this.getDate() < 10 ? "0" + this.getDate() : this.getDate();
return "".concat(yyyy).concat(mm).concat(dd);
};
Date.prototype.yyyymmddhhmm = function() {
var yyyymmdd = this.yyyymmdd();
var hh = this.getHours() < 10 ? "0" + this.getHours() : this.getHours();
var min = this.getMinutes() < 10 ? "0" + this.getMinutes() : this.getMinutes();
return "".concat(yyyymmdd).concat(hh).concat(min);
};
Date.prototype.yyyymmddhhmmss = function() {
var yyyymmddhhmm = this.yyyymmddhhmm();
var ss = this.getSeconds() < 10 ? "0" + this.getSeconds() : this.getSeconds();
return "".concat(yyyymmddhhmm).concat(ss);
};
var d = new Date();
document.getElementById("a").innerHTML = d.yyyymmdd();
document.getElementById("b").innerHTML = d.yyyymmddhhmm();
document.getElementById("c").innerHTML = d.yyyymmddhhmmss();
<div>
yyyymmdd: <span id="a"></span>
</div>
<div>
yyyymmddhhmm: <span id="b"></span>
</div>
<div>
yyyymmddhhmmss: <span id="c"></span>
</div>
("00" + (this.getDate())).slice(-2)
숫자를 두 자리 숫자로 가져 오는 데 사용 합니다. "if"또는 "? :"문은없고 .getX () 함수에 대한 호출이 적습니다. 조금 더 빠르지 않으면 적어도 더 읽기 쉽습니다.
네이티브 객체를 수정하는 것을 좋아하지 않으며 허용되는 솔루션에 문자열을 채우는 것보다 곱셈이 더 명확하다고 생각합니다.
function yyyymmdd(dateIn) {
var yyyy = dateIn.getFullYear();
var mm = dateIn.getMonth() + 1; // getMonth() is zero-based
var dd = dateIn.getDate();
return String(10000 * yyyy + 100 * mm + dd); // Leading zeros for mm and dd
}
var today = new Date();
console.log(yyyymmdd(today));
.replace('-', '')
OP는 원래의 질문에 충실했으며 추가 단계가 필요하지 않은 구분 기호를 사용하기 때문에 작동 합니다. 우수한!
UTC에서 Date.toISOString () 인쇄로 인한 가능한 날짜 점프 문제가없는 일반 JS (ES5) 솔루션 :
var now = new Date();
var todayUTC = new Date(Date.UTC(now.getFullYear(), now.getMonth(), now.getDate()));
return todayUTC.toISOString().slice(0, 10).replace(/-/g, '');
이것은 @Pierre Guilbert의 답변에 대한 @weberste의 의견에 대한 답변입니다.
toISOString
여러 개의 연속적인 하이픈을 반환 할 수 있습니까 ?
// UTC/GMT 0
document.write('UTC/GMT 0: ' + (new Date()).toISOString().slice(0, 19).replace(/[^0-9]/g, "")); // 20150812013509
// Client local time
document.write('<br/>Local time: ' + (new Date(Date.now()-(new Date()).getTimezoneOffset() * 60000)).toISOString().slice(0, 19).replace(/[^0-9]/g, "")); // 20150812113509
var someDate = new Date();
var dateFormated = someDate.toISOString().substr(0,10);
console.log(dateFormated);
new Date()
nr 주위의 래퍼 인 새로운 날짜 객체를 만듭니다. 1970/01/01 00 : 00 : 00.000 UTC 이후의 ms입니다. 그런 다음 toISOString
현지 시간대로 인쇄합니다.
또 다른 방법은 스웨덴, 리투아니아, 헝가리, 한국 등과 같이 빅 엔디안 날짜 형식 표준toLocaleDateString
이있는 로케일과 함께 사용하는 것 입니다 .
date.toLocaleDateString('se')
구분 기호 ( -
) 를 제거하는 것은 숫자가 아닌 숫자를 바꾸는 것입니다.
console.log( new Date().toLocaleDateString('se').replace(/\D/g, '') );
UTC 날짜 형식으로 얻을 수있는 잠재적 인 오류는 없습니다. UTC 날짜는 현지 시간대의 날짜와 비교하여 하루 쉬는 날입니다.
이 글 https://stackoverflow.com/a/3067896/5437379 에서 가장 많이 사용되는 답변을위한 약간 단순화 된 버전 :
function toYYYYMMDD(d) {
var yyyy = d.getFullYear().toString();
var mm = (d.getMonth() + 101).toString().slice(-2);
var dd = (d.getDate() + 100).toString().slice(-2);
return yyyy + mm + dd;
}
dateformat 은 매우 많이 사용되는 패키지입니다.
사용하는 방법:
dateformat
NPM에서 다운로드하여 설치하십시오 . 모듈에 필요합니다 :
const dateFormat = require('dateformat');
그런 다음 형식을 지정하십시오.
const myYYYYmmddDate = dateformat(new Date(), 'yyyy-mm-dd');
이 사람은 여기 => http://blog.stevenlevithan.com/archives/date-time-formatformat()
이 Javascript Date
객체에 대한 함수를 작성 했으므로 친숙한 리터럴 형식으로 사용할 수 있습니다.
앱의 Javascript에서 완전한 기능을 갖춘 날짜 형식이 필요한 경우 사용하십시오. 그렇지 않으면 당신이하고 싶은 일이 하나 떨어져 있다면 getYear (), getMonth (), getDay ()를 연결하는 것이 가장 쉽습니다.
@oo의 대답에서 작업하면 형식 문자열에 따라 날짜 문자열이 다시 제공됩니다. 필요한 경우 연도 및 밀리 초에 대해 2 자리 연도 정규식을 쉽게 추가 할 수 있습니다.
Date.prototype.getFromFormat = function(format) {
var yyyy = this.getFullYear().toString();
format = format.replace(/yyyy/g, yyyy)
var mm = (this.getMonth()+1).toString();
format = format.replace(/mm/g, (mm[1]?mm:"0"+mm[0]));
var dd = this.getDate().toString();
format = format.replace(/dd/g, (dd[1]?dd:"0"+dd[0]));
var hh = this.getHours().toString();
format = format.replace(/hh/g, (hh[1]?hh:"0"+hh[0]));
var ii = this.getMinutes().toString();
format = format.replace(/ii/g, (ii[1]?ii:"0"+ii[0]));
var ss = this.getSeconds().toString();
format = format.replace(/ss/g, (ss[1]?ss:"0"+ss[0]));
return format;
};
d = new Date();
var date = d.getFromFormat('yyyy-mm-dd hh:ii:ss');
alert(date);
그러나 그것이 정규 표현식을 많이 사용하기 때문에 특히 성능이 얼마나 효율적인지 모르겠습니다. 아마도 순수한 js를 마스터하지 않는 일부 작업을 사용할 수 있습니다.
mootools가 다음을 제공하는 것 같습니다 Date().format()
: https://mootools.net/more/docs/1.6.0/Types/Date
그래도이 특정 작업에만 포함시킬 가치가 있는지 확실하지 않습니다.
나는 이것을해야 할 때 일반적으로 아래 코드를 사용합니다.
var date = new Date($.now());
var dateString = (date.getFullYear() + '-'
+ ('0' + (date.getMonth() + 1)).slice(-2)
+ '-' + ('0' + (date.getDate())).slice(-2));
console.log(dateString); //Will print "2015-09-18" when this comment was written
.slice (-2)는 문자열의 마지막 두 문자를 알려줍니다.
따라서 어떤 일이 있더라도 요일이나 월에 "0"을 추가 할 수 있으며 마지막 두 개는 항상 원하는 두 개이므로 요청하십시오.
따라서 MyDate.getMonth ()가 9를 반환하면 다음과 같습니다.
("0" + "9") // Giving us "09"
그래서 .slice (-2)를 추가하면 마지막 두 문자가 나타납니다.
("0" + "9").slice(-2)
"09"
그러나 date.getMonth ()가 10을 반환하면 다음과 같습니다.
("0" + "10") // Giving us "010"
따라서 .slice (-2)를 추가하면 마지막 두 문자가 나타납니다.
("0" + "10").slice(-2)
"10"
단순성 및 가독성에 대한 또 다른 대답.
또한 새로운 방법으로 기존의 미리 정의 된 클래스 멤버를 편집하지 않는 것이 좋습니다.
function getDateInYYYYMMDD() {
let currentDate = new Date();
// year
let yyyy = '' + currentDate.getFullYear();
// month
let mm = ('0' + (currentDate.getMonth() + 1)); // prepend 0 // +1 is because Jan is 0
mm = mm.substr(mm.length - 2); // take last 2 chars
// day
let dd = ('0' + currentDate.getDate()); // prepend 0
dd = dd.substr(dd.length - 2); // take last 2 chars
return yyyy + "" + mm + "" + dd;
}
var currentDateYYYYMMDD = getDateInYYYYMMDD();
console.log('currentDateYYYYMMDD: ' + currentDateYYYYMMDD);
추가적이지만 작은 라이브러리를 포함하지 않아도 Sugar.js 는 JavaScript 로 날짜를 처리 할 수 있는 훌륭한 기능을 제공합니다 . 날짜를 포맷하기 위해 사용하는 포맷 기능 :
new Date().format("{yyyy}{MM}{dd}")
yyyymmdd=x=>(f=x=>(x<10&&'0')+x,x.getFullYear()+f(x.getMonth()+1)+f(x.getDate()));
alert(yyyymmdd(new Date));
날짜 와 시간을 모두 허용하는보다 일반적인 접근 방식은 다음과 같습니다. 구성 요소를 숫자 또는 문자열과 동일하게 정렬 .
날짜 ISO 형식의 번호 순서에 따라 현지 시간대로 변환하고 숫자가 아닌 숫자를 제거하십시오. 즉 :
// monkey patch version
Date.prototype.IsoNum = function (n) {
var tzoffset = this.getTimezoneOffset() * 60000; //offset in milliseconds
var localISOTime = (new Date(this - tzoffset)).toISOString().slice(0,-1);
return localISOTime.replace(/[-T:\.Z]/g, '').substring(0,n || 20); // YYYYMMDD
}
용법
var d = new Date();
// Tue Jul 28 2015 15:02:53 GMT+0200 (W. Europe Daylight Time)
console.log(d.IsoNum(8)); // "20150728"
console.log(d.IsoNum(12)); // "201507281502"
console.log(d.IsoNum()); // "20150728150253272"
기본 자바 스크립트 :
new Date().toLocaleString('zu-ZA').slice(0,10).replace(/-/g,'');