Je dois changer une date/heure de 2014-08-20 15:30: pour ressembler à 8/20/2014 15:
Est-ce possible d'utiliser l'objet Date de javascript?
Oui, vous pouvez utiliser l'objet javascript natif Date () et son méthodes.
Par exemple, vous pouvez créer une fonction comme:
function formatDate(date) {
var hours = date.getHours();
var minutes = date.getMinutes();
var ampm = hours >= 12 ? 'pm' : 'am';
hours = hours % 12;
hours = hours ? hours : 12; // the hour '0' should be '12'
minutes = minutes < 10 ? '0'+minutes : minutes;
var strTime = hours + ':' + minutes + ' ' + ampm;
return date.getMonth()+1 + "/" + date.getDate() + "/" + date.getFullYear() + " " + strTime;
}
var d = new Date();
var e = formatDate(d);
alert(e);
Et affichez également le am/pm et l'heure correcte.
N'oubliez pas d'utiliser la méthode getFullYear () et non pas getYear () car elle est obsolète.
S'il vous plaît ne réinventez pas la roue. Il existe déjà de nombreuses solutions COTS à code source ouvert pour résoudre ce problème.
Veuillez consulter les bibliothèques JavaScript suivantes:
J'ai écrit un one-liner en utilisant Moment.js ci-dessous. Vous pouvez consulter la démo ici: JSFiddle .
moment('2014-08-20 15:30:00').format('MM/DD/YYYY h:mm a'); // 08/20/2014 3:30 pm
Pour la partie de date: (le mois est indexé à 0 alors que les jours sont indexés à 1)
var date = new Date('2014-8-20');
console.log((date.getMonth()+1) + '/' + date.getDate() + '/' + date.getFullYear());
pour le moment, vous voudrez créer une fonction pour tester différentes situations et convertir.
Je ne pense pas que cela puisse être fait FIABLEMENT avec les méthodes intégrées de l'objet Date natif. La méthode toLocaleString
se rapproche, mais si je me souviens bien, elle ne fonctionnera pas correctement dans IE <10. Si vous pouvez utiliser une bibliothèque pour cette tâche, MomentJS est une bibliothèque vraiment incroyable; et cela facilite le travail avec les dates et les heures. Sinon, je pense que vous devrez écrire une fonction de base pour vous donner le format que vous recherchez.
function formatDate(date) {
var year = date.getFullYear(),
month = date.getMonth() + 1, // months are zero indexed
day = date.getDate(),
hour = date.getHours(),
minute = date.getMinutes(),
second = date.getSeconds(),
hourFormatted = hour % 12 || 12, // hour returned in 24 hour format
minuteFormatted = minute < 10 ? "0" + minute : minute,
morning = hour < 12 ? "am" : "pm";
return month + "/" + day + "/" + year + " " + hourFormatted + ":" +
minuteFormatted + morning;
}
Vous pouvez le faire:
function formatAMPM(date) { // This is to display 12 hour format like you asked
var hours = date.getHours();
var minutes = date.getMinutes();
var ampm = hours >= 12 ? 'pm' : 'am';
hours = hours % 12;
hours = hours ? hours : 12; // the hour '0' should be '12'
minutes = minutes < 10 ? '0'+minutes : minutes;
var strTime = hours + ':' + minutes + ' ' + ampm;
return strTime;
}
var myDate = new Date();
var displayDate = myDate.getMonth()+ '/' +myDate.getDate()+ '/' +myDate.getFullYear()+ ' ' +formatAMPM(myDate);
console.log(displayDate);