Как получить месяц и дату JavaScript в двухзначном формате? - PullRequest
281 голосов
/ 18 мая 2011

Когда мы вызываем getMonth() и getDate() для date объекта, мы получим single digit number.Например:

Для january отображается 1, но мне нужно отобразить его как 01.Как это сделать?

Ответы [ 24 ]

679 голосов
/ 18 мая 2011
("0" + this.getDate()).slice(-2)

на дату и аналогичные:

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

за месяц.

76 голосов
/ 04 сентября 2013

Если вам нужен формат типа «ГГГГ-ММ-ДДТЧ: мм: сс», то это может быть быстрее:

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

Или обычно используемый формат даты и времени MySQL "ГГГГ-ММ-ДД ЧЧ: мм: сс":

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

Надеюсь, это поможет

39 голосов
/ 18 мая 2011

Пример за месяц:

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
}
18 голосов
/ 10 апреля 2014

Лучший способ сделать это - создать собственный простой форматер (как показано ниже):

getDate() возвращает день месяца (от 1 до 31)
getMonth() возвращаетmonth (от 0 до 11) <<strong> с нуля, 0 = январь, 11 = декабрь
getFullYear() возвращает год (четыре цифры) <<strong> не использовать 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);
}
8 голосов
/ 09 июня 2018

Почему бы не использовать padStart?

var d = new Date();
d.getMonth().toString().padStart(2, "0");
d.getDate().toString().padStart(2, "0");

Это всегда будет возвращать двузначные числа, даже если месяц или день меньше 10, например 6 сентября вернется 09 и 06 соответственно.

7 голосов
/ 01 июня 2012

Следующее используется для преобразования формата даты db2 то есть ГГГГ-ММ-ДД с использованием троичного оператора

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);
6 голосов
/ 01 февраля 2013
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;
}
5 голосов
/ 26 сентября 2017

Еще один пример, почти один лайнер.

var date = new Date();
console.log( (date.getMonth() < 9 ? '0': '') + (date.getMonth()+1) );
5 голосов
/ 18 мая 2011
function monthFormated() {
  var date = new Date(),
      month = date.getMonth();
  return month+1 < 10 ? ("0" + month) : month;
}
4 голосов
/ 25 апреля 2012

Это было мое решение:

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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...