web-dev-qa-db-fra.com

Format javascript date / heure

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?

67
user2994560

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.

DÉMOhttp://jsfiddle.net/a_incarnati/kqo10jLb/4/

98

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:


Démo

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
64
Mr. Polywhirl

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.

15
Bray

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;
}
11
Christopher

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

violon

1
Nick Rameau