javascript - 비교 - node js date format yyyy-mm-dd




JS date 객체에서 YYYYMMDD 형식의 문자열 가져 오기? (20)

Moment.js 는 친구가 될 수 있습니다.

var date = new Date();
var formattedDate = moment(date).format('YYYYMMDD');

JS를 사용하여 date objectYYYYMMDD 형식의 문자열로 변환하려고합니다. Date.getYear() , Date.getMonth()Date.getDay() 연결하는 것보다 쉬운 방법이 있습니까?


@ oo의 답변으로 작업하면 형식 문자열에 따라 날짜 문자열을 되돌릴 수 있습니다. 1 년 및 밀리 초의 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를 마스터하지 않는 일부 작품을 사용할 수 있습니다.



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 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();
   var hh = this.getHours() < 10 ? "0" + this.getHours() : this.getHours();
   var min = this.getMinutes() < 10 ? "0" + this.getMinutes() : this.getMinutes();
   return "".concat(yyyy).concat(mm).concat(dd).concat(hh).concat(min);
  };

 Date.prototype.yyyymmddhhmmss = 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();
   var hh = this.getHours() < 10 ? "0" + this.getHours() : this.getHours();
   var min = this.getMinutes() < 10 ? "0" + this.getMinutes() : this.getMinutes();
   var ss = this.getSeconds() < 10 ? "0" + this.getSeconds() : this.getSeconds();
   return "".concat(yyyy).concat(mm).concat(dd).concat(hh).concat(min).concat(ss);
  };

var d = new Date();
d.yyyymmdd();
d.yyyymmddhhmm();
d.yyyymmddhhmmss();

RiZKiT가 제안한 DRY 바이올린

https://jsfiddle.net/EricHerlitz/tuhhfxz9/


기본 자바 스크립트 :

new Date().toLocaleString('zu-ZA').slice(0,10).replace(/-/g,'');

나는 네이티브 객체를 수정하는 것을 좋아하지 않으며, 곱셈은 허용 된 솔루션을 패딩하는 문자열보다 명확하다고 생각합니다.

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

피들 : http://jsfiddle.net/gbdarren/Ew7Y4/


나는 프로토 타입에 추가하는 것을 좋아하지 않았다. 대안은 다음과 같습니다.

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;


다음은 에서 조금 개선 된

Date.prototype.ddmmyyyy = function(delimiter) {
    var yyyy = this.getFullYear().toString();
    var mm = (this.getMonth()+1).toString(); // getMonth() is zero-based
    var dd  = this.getDate().toString();
    return (dd[1]?dd:"0"+dd[0]) + delimiter + (mm[1]?mm:"0"+mm[0]) + delimiter +yyyy  ; // padding
};

누구에게나 도움이되기를 바랍니다!

:)


단순함과 가독성에 대한 또 하나의 대답.
또한 새 메서드로 기존의 미리 정의 된 클래스 멤버를 편집하는 것은 권장되지 않습니다.

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

또 다른 방법은 스웨덴, 리투아니아, 헝가리, 한국 등 빅 엔디안 날짜 형식 표준 이있는 로캘로 toLocaleDateString 을 사용하는 것입니다.

date.toLocaleDateString('se')

구분 기호 ( - )를 제거하려면 숫자 만 바꾸면됩니다.

console.log( new Date().toLocaleDateString('se').replace(/\D/g, '') );

UTC 날짜 형식으로 가져올 수있는 잠재적 인 오류가 없습니다. UTC 날짜는 현지 시간대의 날짜와 비교하여 하루 쉬을 수 있습니다.


이 사람은 here => http://blog.stevenlevithan.com/archives/date-time-format 이 Javascript의 Date 객체에 format() 함수를 작성하여 익숙한 리터럴 형식과 함께 사용할 수 있습니다.

앱의 자바 스크립트에서 전체 기능의 날짜 형식이 필요한 경우 사용하십시오. 그렇지 않으면 당신이하고 싶은 일이 꺼져 있다면, getYear (), getMonth (), getDay ()를 연결하는 것이 아마도 가장 쉽다.


이 스레드에서 가장 많이 쓰이는 간단한 대답은 https://.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;
}

이 코드는 오늘 날짜의 YYYY-MM-DD 문자열을 만드는 데 사용할 수있는 단일 코드 줄입니다.

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

이 한 줄 코드를 사용하여 일년 중 날짜를 얻을 수 있습니다.

var date = new Date().getFullYear() + "-" + (parseInt(new Date().getMonth()) + 1) + "-" + new Date().getDate();

추가 (그러나 작은) 라이브러리를 포함해도 Sugar.js 는 JavaScript로 dates 작업을 할 수있는 많은 기능을 제공합니다. 날짜 형식을 지정하려면 다음 format 함수를 사용하십시오.

new Date().format("{yyyy}{MM}{dd}")

date-shortcode 를 구하십시오!

const dateShortcode = require('date-shortcode')
dateShortcode.parse('{YYYYMMDD}', new Date())
//=> '20180304'


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

@ 피에르 길버트의 답변에 대한 @ weberste의 의견에 대한 답변입니다.


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





date