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

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

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

Ответы [ 24 ]

3 голосов
/ 22 февраля 2017

Используя Moment.js это можно сделать так:

moment(new Date(2017, 1, 1)).format('DD') // day
moment(new Date(2017, 1, 1)).format('MM') // month
3 голосов
/ 02 ноября 2012

Не ответ, но вот как я получаю требуемый формат даты в переменной

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 голосов
/ 01 июня 2016

Совет от 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 голосов
/ 16 октября 2018

new Date().getMonth() метод возвращает месяц в виде числа (0-11)

С помощью этой функции вы можете легко исправить номер месяца.

function monthFormatted() {
  var date = new Date(),
      month = date.getMonth();
  return month+1 < 10 ? ("0" + month) : month;
}
2 голосов
/ 15 августа 2018

Я бы сделал это:

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
2 голосов
/ 14 мая 2019

Если бы это могло сэкономить время, я искал:

YYYYMMDD

на сегодня и получил:

const dateDocumentID = new Date()
  .toISOString()
  .substr(0, 10)
  .replace(/-/g, '');
1 голос
/ 18 ноября 2016

И еще одна версия здесь 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 голос
/ 30 июня 2015
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 голос
/ 20 августа 2015

Ответы здесь были полезны, однако мне нужно нечто большее: не только месяц, дата, месяц, часы и секунды для имени по умолчанию.

Интересно, что хотя предварение «0» было необходимо для всего вышеперечисленного, «+ 1» требовалось только месяц, а не другие.

Как пример:

("0" + (d.getMonth() + 1)).slice(-2)     // Note: +1 is needed
("0" + (d.getHours())).slice(-2)         // Note: +1 is not needed
0 голосов
/ 15 июля 2019

Если вы проверите меньше 10 , вам не нужно создавать новую функцию для этого.Просто назначьте переменную в скобках и верните ее с троичным оператором.

(m = new Date().getMonth() + 1) < 10 ? `0${m}` : `${m}`
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...