JavaScript의 월 및 날짜를 ​​2 자리 형식으로 얻으려면 어떻게합니까?


답변:


812
("0" + this.getDate()).slice(-2)

날짜와 비슷한 :

("0" + (this.getMonth() + 1)).slice(-2)

그 달 동안.


86
근사하지만 function addZ(n){return n<10? '0'+n:''+n;}, 좀 더 일반적입니다.
RobG

9
슬라이스는 영리하지만, 훨씬 더 느린 단순 비교보다는이다 : jsperf.com/slice-vs-comparison
DAK

30
@ dak : 그리고 현실적으로 중요한 것은 언제입니까? 나는 당신이 초당 수천 번 달을 계산하는 것을 의심합니다.
Sasha Chedygov

2
@ KasperHoldum- getMonthgetDate반환 숫자가 아닌 문자열. 그리고 문자열과의 호환성이 필요한 '0' + Number(n)경우 작업을 수행합니다.
RobG

9
@Sasha Chedygov는 특히 정렬하는 경우 초당 수천 번의 월을 계산할 수 있음을 확신합니다
Dexygen

87

"YYYY-MM-DDTHH : mm : ss"와 같은 형식을 원하면 더 빠를 수 있습니다.

var date = new Date().toISOString().substr(0, 19);
// toISOString() will give you YYYY-MM-DDTHH:mm:ss.sssZ

또는 일반적으로 사용되는 MySQL 날짜 / 시간 형식 "YYYY-MM-DD HH : mm : ss":

var date2 = new Date().toISOString().substr(0, 19).replace('T', ' ');

이게 도움이 되길 바란다


1
이것이 내가 만난 가장 끔찍한 솔루션입니다. 여기서 만 문제는 표준 시간대 오프셋입니다.
Praym

3
표준 시간대 오프셋은 다음과 같이 처리 할 수 ​​있습니다. var date = new Date (new Date (). getTime ()-new Date (). getTimezoneOffset () * 60 * 1000) .toISOString (). substr (0,19) .replace ( 'T', '');
Praym

Praym, 귀하의 코드는 저에게 효과적이지만 복사 및 붙여 넣기에는 숨겨진 문자 또는 무언가가 있어야하므로 직접 입력하십시오.
spacebread

나는이 정확한 문제를 해결하려고 노력 하면서이 질문을 끝내기 때문에 당신의 대답은 내가 필요한 것입니다.
엔지니어 토스트

이 메서드는 UTC 시간대에 따라 날짜와 시간을 반환합니다.
Amr

41

월의 예 :

function getMonth(date) {
  var month = date.getMonth() + 1;
  return month < 10 ? '0' + month : '' + month; // ('' + month) for string result
}  

Date이러한 기능으로 객체를 확장 할 수도 있습니다 .

Date.prototype.getMonthFormatted = function() {
  var month = this.getMonth() + 1;
  return month < 10 ? '0' + month : '' + month; // ('' + month) for string result
}

4
getMonth는 1과 12가 아닌 0과 11 사이의 숫자를 반환합니다.
Salman A

4
일치하지 않는 결과가 반환됩니다. 11 월과 12 월에는 문자열을 반환하고 다른 달에는 숫자를 반환합니다.
Tim Down

SalMon A를 구현하도록 코드를 업데이트하여 getMonth가 1 대신 0을 기반으로한다는 경고를 표시하고 문자열이 항상 반환되도록 따옴표를 추가했습니다.
Jan Derk

23

이를 수행하는 가장 좋은 방법은 다음과 같이 간단한 포맷터를 만드는 것입니다.

getDate()반환 (1-31)에서 해당 월의 일
getMonth()(0-11에서) 월 반환 < 제로는, 0 = 1 월, 11 = 12 월
getFullYear() 년 반환 (네 자리 숫자) < 사용 안 함getYear()

function formatDateToString(date){
   // 01, 02, 03, ... 29, 30, 31
   var dd = (date.getDate() < 10 ? '0' : '') + date.getDate();
   // 01, 02, 03, ... 10, 11, 12
   var MM = ((date.getMonth() + 1) < 10 ? '0' : '') + (date.getMonth() + 1);
   // 1970, 1971, ... 2015, 2016, ...
   var yyyy = date.getFullYear();

   // create the format you want
   return (dd + "-" + MM + "-" + yyyy);
}

20

왜 사용하지 padStart않습니까?

var dt = new Date();

year  = dt.getYear() + 1900;
month = (dt.getMonth() + 1).toString().padStart(2, "0");
day   = dt.getDate().toString().padStart(2, "0");

console.log(year + '/' + month + '/' + day);

월 또는 일이 10보다 작은 경우에도 항상 2 자리 숫자를 반환합니다.

노트:

  • 이것은 JS 코드가 babel을 사용하여 변환 된 경우 Internet Explorer에서만 작동합니다. 합니다.
  • getYear() 1900 년부터 연도를 반환하며 필요하지 않습니다 padStart .
  • getMonth() 월을 0에서 11까지 반환합니다.
    • 패딩 전 달에 1을 더하여 1에서 12로 유지
  • getDate() 1에서 31 사이의 요일을 반환합니다.
    • 일곱째 날이 돌아 07오므로 문자열을 채우기 전에 1을 추가 할 필요가 없습니다.

1
예. 위의 MDN 링크에 포함되어 있습니다. 바벨을 사용하여 번역하면 문제가 없습니다.
SomeGuyOnAComputer

10

다음은 삼항 연산자를 사용하여 db2 날짜 형식, 즉 YYYY-MM-DD를 변환하는 데 사용됩니다.

var currentDate = new Date();
var twoDigitMonth=((currentDate.getMonth()+1)>=10)? (currentDate.getMonth()+1) : '0' + (currentDate.getMonth()+1);  
var twoDigitDate=((currentDate.getDate())>=10)? (currentDate.getDate()) : '0' + (currentDate.getDate());
var createdDateTo = currentDate.getFullYear() + "-" + twoDigitMonth + "-" + twoDigitDate; 
alert(createdDateTo);

7

나는 이것을 할 것이다 :

var d = new Date('January 13, 2000');
var s = d.toLocaleDateString('en-US', { month: '2-digit', day: '2-digit', year: 'numeric' });
console.log(s); // prints 01/13/2000


6
function monthFormated(date) {
   //If date is not passed, get current date
   if(!date)
     date = new Date();

     month = date.getMonth();

    // if month 2 digits (9+1 = 10) don't add 0 in front 
    return month < 9 ? "0" + (month+1) : month+1;
}

6

또 다른 예, 거의 하나의 라이너.

var date = new Date();
console.log( (date.getMonth() < 9 ? '0': '') + (date.getMonth()+1) );


5
function monthFormated() {
  var date = new Date(),
      month = date.getMonth();
  return month+1 < 10 ? ("0" + month) : month;
}

5

시간이 여유가 있다면 다음과 같은 결과를 얻었습니다.

YYYYMMDD

오늘과 함께 :

const dateDocumentID = new Date()
  .toISOString()
  .substr(0, 10)
  .replace(/-/g, '');

2
대답은 깔끔합니다. 를 위해 DD/MM/YY, 나는 갔다new Date().toISOString().substr(0, 10).split('-').reverse().map(x => x.substr(0, 2)).join('/')
Max Ma

4

이것은 내 해결책이었습니다.

function leadingZero(value) {
  if (value < 10) {
    return "0" + value.toString();
  }
  return value.toString();
}

var targetDate = new Date();
targetDate.setDate(targetDate.getDate());
var dd = targetDate.getDate();
var mm = targetDate.getMonth() + 1;
var yyyy = targetDate.getFullYear();
var dateCurrent = leadingZero(mm) + "/" + leadingZero(dd) + "/" + yyyy;


3

대답은 아니지만 변수에 필요한 날짜 형식을 얻는 방법은 다음과 같습니다.

function setDateZero(date){
  return date < 10 ? '0' + date : date;
}

var curr_date = ev.date.getDate();
var curr_month = ev.date.getMonth() + 1;
var curr_year = ev.date.getFullYear();
var thisDate = curr_year+"-"+setDateZero(curr_month)+"-"+setDateZero(curr_date);

도움이 되었기를 바랍니다!


2

MDN 팁 :

function date_locale(thisDate, locale) {
  if (locale == undefined)
    locale = 'fr-FR';
  // set your default country above (yes, I'm french !)
  // then the default format is "dd/mm/YYY"

  if (thisDate == undefined) {
    var d = new Date();
  } else {
    var d = new Date(thisDate);
  }
  return d.toLocaleDateString(locale);
}

var thisDate = date_locale();
var dayN = thisDate.slice(0, 2);
var monthN = thisDate.slice(3, 5);
console.log(dayN);
console.log(monthN);

http://jsfiddle.net/v4qcf5x6/


2

new Date().getMonth() 메소드는 월을 숫자 (0-11)로 리턴합니다.

이 기능을 사용하면 월 번호를 쉽게 수정할 수 있습니다.

function monthFormatted() {
  var date = new Date(),
      month = date.getMonth();
  return month+1 < 10 ? ("0" + month) : month;
}

1
function GetDateAndTime(dt) {
  var arr = new Array(dt.getDate(), dt.getMonth(), dt.getFullYear(),dt.getHours(),dt.getMinutes(),dt.getSeconds());

  for(var i=0;i<arr.length;i++) {
    if(arr[i].toString().length == 1) arr[i] = "0" + arr[i];
  }

  return arr[0] + "." + arr[1] + "." + arr[2] + " " + arr[3] + ":" + arr[4] + ":" + arr[5]; 
}

1

그리고 다른 버전은 https://jsfiddle.net/ivos/zcLxo8oy/1/ 입니다.

var dt = new Date(2016,5,1); // just for the test
var separator = '.';
var strDate = (dt.getFullYear() + separator + (dt.getMonth() + 1) + separator + dt.getDate());
// end of setup

strDate = strDate.replace(/(\b\d{1}\b)/g, "0$1")

1

여기에 대한 답변이 도움이되었지만 기본 이름으로 월, 날짜, 월, 시간 및 초뿐만 아니라 그 이상이 필요합니다.

흥미롭게도, "0"을 앞에 추가해야했지만 "+ 1"은 다른 달이 아닌 한 달 동안 만 필요했습니다.

예를 들어 :

("0" + (d.getMonth() + 1)).slice(-2)     // Note: +1 is needed
("0" + (d.getHours())).slice(-2)         // Note: +1 is not needed

0

내 해결책 :

function addLeadingChars(string, nrOfChars, leadingChar) {
    string = string + '';
    return Array(Math.max(0, (nrOfChars || 2) - string.length + 1)).join(leadingChar || '0') + string;
}

용법:

var
    date = new Date(),
    month = addLeadingChars(date.getMonth() + 1),
    day = addLeadingChars(date.getDate());

jsfiddle : http://jsfiddle.net/8xy4Q/1/


0
var net = require('net')

function zeroFill(i) {
  return (i < 10 ? '0' : '') + i
}

function now () {
  var d = new Date()
  return d.getFullYear() + '-'
    + zeroFill(d.getMonth() + 1) + '-'
    + zeroFill(d.getDate()) + ' '
    + zeroFill(d.getHours()) + ':'
    + zeroFill(d.getMinutes())
}

var server = net.createServer(function (socket) {
  socket.end(now() + '\n')
})

server.listen(Number(process.argv[2]))

0

u가 getDate () 함수가 1 대신 01로 날짜를 반환하도록하려면 여기에 코드가 있습니다. 오늘 날짜가 01-11-2018이라고 가정하겠습니다.

var today = new Date();
today = today.getFullYear()+ "-" + (today.getMonth() + 1) + "-" + today.getDate();      
console.log(today);       //Output: 2018-11-1


today = today.getFullYear()+ "-" + (today.getMonth() + 1) + "-" + ((today.getDate() < 10 ? '0' : '') + today.getDate());
console.log(today);        //Output: 2018-11-01

0

나는 이런 식으로하고 싶었고 이것이 내가 한 일이다.

추신 : 나는 정답이 있다는 것을 알고 있지만 여기에 내 자신의 것을 추가하고 싶었습니다.

const todayIs = async () =>{
    const now = new Date();
    var today = now.getFullYear()+'-';
    if(now.getMonth() < 10)
        today += '0'+now.getMonth()+'-';
    else
        today += now.getMonth()+'-';
    if(now.getDay() < 10)
        today += '0'+now.getDay();
    else
        today += now.getDay();
    return today;
}

너무 많은 노력. 그렇지 않습니까?
ahmednawazbutt

0

10보다 작은 검사 를하면 새 기능을 만들지 않아도됩니다. 변수를 괄호 안에 할당하고 삼항 연산자로 반환하십시오.

(m = new Date().getMonth() + 1) < 10 ? `0${m}` : `${m}`

0
currentDate(){
        var today = new Date();
        var dateTime =  today.getFullYear()+'-'+
                        ((today.getMonth()+1)<10?("0"+(today.getMonth()+1)):(today.getMonth()+1))+'-'+
                        (today.getDate()<10?("0"+today.getDate()):today.getDate())+'T'+
                        (today.getHours()<10?("0"+today.getHours()):today.getHours())+ ":" +
                        (today.getMinutes()<10?("0"+today.getMinutes()):today.getMinutes())+ ":" +
                        (today.getSeconds()<10?("0"+today.getSeconds()):today.getSeconds());        
            return dateTime;
},

0

Moment https://momentjs.com/ 이라는 다른 라이브러리를 사용하는 것이 좋습니다.

이런 식으로 추가 작업을하지 않고도 날짜를 직접 형식화 할 수 있습니다

const date = moment().format('YYYY-MM-DD')
// date: '2020-01-04'

사용할 수 있도록 순간을 가져와야합니다.

yarn add moment 
# to add the dependency
import moment from 'moment' 
// import this at the top of the file you want to use it in

이것이 도움이되기를 바랍니다 : D


1
Moment.js는 이미 제안되었습니다. 그러나 귀하의 조언은 여전히 ​​완전하고 유용합니다.
iND

0
$("body").delegate("select[name='package_title']", "change", function() {

    var price = $(this).find(':selected').attr('data-price');
    var dadaday = $(this).find(':selected').attr('data-days');
    var today = new Date();
    var endDate = new Date();
    endDate.setDate(today.getDate()+parseInt(dadaday));
    var day = ("0" + endDate.getDate()).slice(-2)
    var month = ("0" + (endDate.getMonth() + 1)).slice(-2)
    var year = endDate.getFullYear();

    var someFormattedDate = year+'-'+month+'-'+day;

    $('#price_id').val(price);
    $('#date_id').val(someFormattedDate);
});
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.