[javascript] JavaScript 날짜 형식을 yyyy-mm-dd로

형식이있는 날짜가 Sun May 11,2014있습니다. 2014-05-11JavaScript 를 사용하여 어떻게 변환 할 수 있습니까?

function taskDate(dateMilli) {
    var d = (new Date(dateMilli) + '').split(' ');
    d[2] = d[2] + ',';

    return [d[0], d[1], d[2], d[3]].join(' ');
}

var datemilli = Date.parse('Sun May 11,2014');
console.log(taskDate(datemilli));

위의 코드는 동일한 날짜 형식을 제공 sun may 11,2014합니다. 이 문제를 어떻게 해결할 수 있습니까?



답변

넌 할 수있어:

function formatDate(date) {
    var d = new Date(date),
        month = '' + (d.getMonth() + 1),
        day = '' + d.getDate(),
        year = d.getFullYear();

    if (month.length < 2)
        month = '0' + month;
    if (day.length < 2)
        day = '0' + day;

    return [year, month, day].join('-');
}

사용 예 :

alert(formatDate('Sun May 11,2014'));

산출:

2014-05-11

JSFiddle 데모 : http://jsfiddle.net/abdulrauf6182012/2Frm3/


답변

toISOString날짜를 ISO 8601 형식으로 가져 오는 기본 제공 방법을 활용하십시오 .

yourDate.toISOString().split('T')[0]

yourDate가 날짜 개체 인 곳

편집 : 어떤 사람은 주석에서 시간대를 처리하기 위해 이것을 썼습니다 :

const offset = yourDate.getTimezoneOffset()
yourDate = new Date(yourDate.getTime() + (offset*60*1000))
return yourDate.toISOString().split('T')[0]


답변

이 방법으로 날짜를 yyyy-mm-dd 형식으로 가져옵니다. 🙂

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


답변

날짜를 yyyy-mm-dd 형식으로 변환하는 가장 간단한 방법은 다음과 같습니다.

var date = new Date("Sun May 11,2014");
var dateString = new Date(date.getTime() - (date.getTimezoneOffset() * 60000 ))
                    .toISOString()
                    .split("T")[0];

작동 방식 :

  • new Date("Sun May 11,2014")문자열 "Sun May 11,2014"을 시간을 나타내는 날짜 객체 로 변환Sun May 11 2014 00:00:00 현재 로캘 (호스트 시스템 설정)을 기준으로 시간대
  • new Date(date.getTime() - (date.getTimezoneOffset() * 60000 )) 날짜를 시간에 해당하는 날짜 객체로 변환 Sun May 11 2014 00:00:00시간대 오프셋을 빼서 UTC (표준 시간) 단위
  • .toISOString() 날짜 객체를 ISO 8601 문자열로 변환 2014-05-11T00:00:00.000Z
  • .split("T") 문자열을 배열로 분할 ["2014-05-11", "00:00:00.000Z"]
  • [0] 해당 배열의 첫 번째 요소를 가져옵니다

데모

var date = new Date("Sun May 11,2014");
var dateString = new Date(date.getTime() - (date.getTimezoneOffset() * 60000 ))
                    .toISOString()
                    .split("T")[0];

console.log(dateString);


답변

format = function date2str(x, y) {
    var z = {
        M: x.getMonth() + 1,
        d: x.getDate(),
        h: x.getHours(),
        m: x.getMinutes(),
        s: x.getSeconds()
    };
    y = y.replace(/(M+|d+|h+|m+|s+)/g, function(v) {
        return ((v.length > 1 ? "0" : "") + eval('z.' + v.slice(-1))).slice(-2)
    });

    return y.replace(/(y+)/g, function(v) {
        return x.getFullYear().toString().slice(-v.length)
    });
}

결과:

format(new Date('Sun May 11,2014'), 'yyyy-MM-dd')
"2014-05-11


답변

일부 답변의 조합 :

var d = new Date(date);
date = [
  d.getFullYear(),
  ('0' + (d.getMonth() + 1)).slice(-2),
  ('0' + d.getDate()).slice(-2)
].join('-');


답변

라이브러리 사용에 대해 아무것도 없다면 Moments.js 라이브러리를 다음과 같이 사용할 수 있습니다 .

var now = new Date();
var dateString = moment(now).format('YYYY-MM-DD');

var dateStringWithTime = moment(now).format('YYYY-MM-DD HH:mm:ss');
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script>