J'ai une date comme celle-ci lundi 9 janvier 2010
Je veux maintenant le convertir en
1/9/2010 mm/jj/aaaa
J'ai essayé de faire ça
var startDate = "Monday, January 9, 2010";
var convertedStartDate = new Date(startDate);
var month = convertedStartDate.getMonth() + 1
var day = convertedStartDate.getDay();
var year = convertedStartDate.getFullYear();
var shortStartDate = month + "/" + day + "/" + year;
Cependant, il faut penser que la date est dans un format différent puisque le jour renvoie 1 au lieu de 9.
La méthode getDay()
renvoie un nombre pour indiquer le jour de la semaine (0 = dim, 1 = lun, ... 6 = sam). Utilisez getDate()
pour renvoyer un nombre pour le jour du mois:
var day = convertedStartDate.getDate();
Si vous le souhaitez, vous pouvez essayer d'ajouter une fonction de format personnalisé au prototype de l'objet Date
:
Date.prototype.formatMMDDYYYY = function(){
return (this.getMonth() + 1) +
"/" + this.getDate() +
"/" + this.getFullYear();
}
Après cela, vous pouvez appeler formatMMDDYYY()
sur toute instance de l'objet Date
. Bien sûr, ce n'est qu'un exemple très spécifique, et si vous en avez vraiment besoin, vous pouvez écrire une fonction de formatage générique qui le ferait sur la base d'une chaîne de formatage, un peu comme SimpleDateeFormat de Java ( http: // Java. Sun.com/j2se/1.4.2/docs/api/Java/text/SimpleDateFormat.html )
(tangente: l'objet Date
me confond toujours ... getYear()
vs getFullYear()
, getDate()
vs getDay()
, getDate()
s'étend de 1..31, mais getMonth()
de 0..11
C'est un gâchis et j'ai toujours besoin de jeter un coup d'œil. http://www.w3schools.com/jsref/jsref_obj_date.asp )
Voici:
(new Date()).toLocaleDateString('en-US');
C'est ça !!
vous pouvez l'utiliser sur n'importe quel objet date
disons que vous avez un objet appelé "currentDate"
var currentDate = new Date(); //use your date here
currentDate.toLocaleDateString('en-US'); // "en-US" gives date in US Format - mm/dd/yy
(ou)
Si vous le souhaitez au format local,
currentDate.toLocaleDateString(); // gives date in local Format
var d = new Date("Wed Mar 25 2015 05:30:00 GMT+0530 (India Standard Time)");
document.getElementById("demo").innerHTML = d.toLocaleDateString();
JavaScript est connu pour mal gérer les dates. Il y a quelques pièges auxquels vous serez susceptible si vous ajoutez simplement une date ensemble comme ceci:
var startDate = "Monday, January 9, 2010";
var convertedStartDate = new Date(startDate);
var month = convertedStartDate.getMonth() + 1
var day = convertedStartDate.getDay();
var year = convertedStartDate.getFullYear();
var shortStartDate = month + "/" + day + "/" + year;
Vous devez utiliser Moment.js pour gérer ce cas. Il existe des tonnes de formats intégrés pour les dates et vous pouvez les spécifier manuellement sans risque d'ajout de décalage date-heure ou de format différent de celui que vous attendez.
Par exemple: moment('01/01/2001').format('L');
résultera en '01/01/2001 '
Jetez un oeil à ce sandbox moment.js sur jsfiddle
date.toLocaleDateString('en-US')
fonctionne très bien. Voici quelques informations supplémentaires à ce sujet: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleDateString
Vous pouvez le faire assez facilement avec mon package date-shortcode :
const dateShortcode = require('date-shortcode')
var startDate = 'Monday, January 9, 2010'
dateShortcode.parse('{M/D/YYYY}', startDate)
//=> '1/9/2010'
Un peu tard pour la fête, toLocaleDateString()
supprimera les premiers 0 du jour et du mois, nous obtiendrons donc quelque chose comme "1/9/1970", ce qui n'est pas parfait à mon avis. Pour obtenir un format approprié MM/DD/YYYY
nous pouvons utiliser quelque chose comme:
new Date(dateString).toLocaleDateString('en-US', {
day: '2-digit',
month: '2-digit',
year: 'numeric',
})