web-dev-qa-db-fra.com

Comment puis-je obtenir le mois et la date de JavaScript au format 2 chiffres?

Lorsque nous appelons getMonth() et getDate() sur l'objet date, nous obtenons le single digit number. Par exemple :

Pour january, il affiche 1, mais je dois l’afficher sous la forme 01. Comment faire ça?

287
srini
("0" + this.getDate()).slice(-2)

pour la date, et similaire:

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

pour le mois.

694
Hugo

Si vous voulez un format comme "AAAA-MM-JJTHH: mm: ss", alors ceci pourrait être plus rapide:

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

Ou le format date/heure MySQL couramment utilisé "AAAA-MM-JJ HH: mm: ss":

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

J'espère que ça aide

77
Qiniso

Exemple pour le mois:

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

Vous pouvez également étendre l'objet Date avec cette fonction:

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

La meilleure façon de faire est de créer votre propre formateur simple (comme ci-dessous):

getDate() renvoie le jour du mois (de 1 à 31)
getMonth() renvoie le mois (de 0 à 11) <base zéro, 0 = janvier, 11 = décembre
getFullYear() renvoie l'année (quatre chiffres) <ne pas utiliser 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);
}
19
Marcel

Pourquoi ne pas utiliser padStart ?

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

Cela retournera toujours 2 chiffres, même si le mois ou le jour est inférieur à 10, par exemple. Le 6 septembre, les retours 09 et 06 respectivement.

9

Ce qui suit est utilisé pour convertir le format de date db2 i.e AAAA-MM-JJ à l’aide de l’opérateur ternaire.

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
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
ssamuel68
function monthFormated() {
  var date = new Date(),
      month = date.getMonth();
  return month+1 < 10 ? ("0" + month) : month;
}
5
Mohsen

Juste un autre exemple, presque un paquebot.

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

En utilisant Moment.js cela peut être fait comme ça:

moment(new Date(2017, 1, 1)).format('DD') // day
moment(new Date(2017, 1, 1)).format('MM') // month
4
Aliaksandr Sushkevich

C'était ma solution:

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;
4
Jon

Pas une réponse, mais voici comment obtenir le format de date requis dans une variable

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

J'espère que cela t'aides!

3
foxybagga

Si cela pouvait me permettre de gagner du temps, je cherchais:

YYYYMMDD

pour aujourd'hui, et s'entend avec:

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

La méthode new Date().getMonth() renvoie le mois sous forme de nombre (0-11)

Vous pouvez facilement obtenir le numéro de mois correct avec cette fonction.

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

Astuce de 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
laurent belloeil

Je voudrais faire ceci:

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
Fernando Vezzali
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
Emrah KAYNAR

Et une autre version ici https://jsfiddle.net/ivos/zcLxo8oy/1/ , espérons être utile.

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
i100

Les réponses ici ont été utiles, mais j'ai besoin de plus que cela: pas seulement mois, date, mois, heures et secondes, pour un nom par défaut.

Il est intéressant de noter que si "0" était requis pour tous les éléments ci-dessus, "+1" n'était requis que pour un mois, pas les autres.

À titre d'exemple:

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

si vous voulez que la fonction getDate () renvoie la date sous la forme 01 au lieu de 1, voici le code correspondant .... Supposons que la date du jour est le 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
Jayanth G
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
Chí Nguyễn

Ma solution:

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

Usage:

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

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

0
user3336882

Si vous cochez inférieur à 1, vous ne devez pas créer de nouvelle fonction pour cela. Il suffit d’affecter une variable entre parenthèses et de la renvoyer avec l’opérateur ternaire.

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

Je voulais faire quelque chose comme ça et c'est ce que j'ai fait

p.s. Je sais qu'il y a une bonne réponse en haut, mais je voulais juste ajouter quelque chose de ma part ici

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;
}
0
Mohid Kazi