web-dev-qa-db-fra.com

Comment convertir un horodatage Unix en date de calendrier moment.js

J'ai un horodatage Unix et j'essaie de le convertir en une date telle que MM/JJ/AAAA. Jusqu'à présent, j'ai ceci: 

$(document).ready(function() {
      var value = $("#unixtime").val(); //this retrieves the unix timestamp
      var dateString = moment(value).calendar(); 
      alert(dateString);
});

Lorsque j'essaie d'imprimer la date du calendrier, la fenêtre indique "Date invalide". Quelqu'un peut m'aider? 

100
Andrew

En utilisant moment.js comme vous l'avez demandé:

var dateString = moment.unix(value).format("MM/DD/YYYY");
264
Matt Johnson

L'horodatage UNIX indique le nombre de secondes depuis 1970. Vous devez donc le convertir en objet JS Date:

var date = new Date(unixTimestamp*1000);
31
Cris

Moment.js fournit Formats localisés qui peuvent être utilisés. 

Voici un exemple:

const moment = require('moment');

const timestamp = 1519482900000;
const formatted = moment(timestamp).format('L');

console.log(formatted); // "02/24/2018"
10
Benny Neugebauer
new moment(timeStamp,'yyyyMMddHHmmssfff').toDate()
4
Mohamed.Abdo

Seulement ça,

moment.unix(date).toDate();
1

Cette fonction crée une date à partir de l'horodatage:

    function formatDateTime(dateString) {
        const parsed = moment(new Date(dateString))

        if (!parsed.isValid()) {
            return dateString
        }

        return parsed.format('MMM D, YYYY, HH:mmA')
    }
0
Bill Zelenko
$(document).ready(function() {
    var value = $("#unixtime").val(); //this retrieves the unix timestamp
    var dateString = moment(value, 'MM/DD/YYYY', false).calendar(); 
    alert(dateString);
});

Il existe un mode strict et un mode Forgiving .

Bien que le mode strict fonctionne mieux dans la plupart des situations, le mode pardonner peut être très utile lorsque le format de la chaîne en cours de transmission peut varier.

Dans une version ultérieure, l'analyseur utilisera par défaut le mode strict. Le mode strict requiert que l’entrée au moment voulu corresponde exactement au format spécifié, y compris les séparateurs. Le mode strict est défini en passant true comme troisième paramètre à la fonction moment.

Un scénario courant dans lequel le mode pardonner est utile est celui où une API tierce fournit la date et où le format de date de cette API peut changer. Supposons qu'une API commence par envoyer les dates au format "AAAA-MM-JJ", puis passe ensuite au format "MM/JJ/AAAA".

En mode strict, le code suivant a pour résultat l'affichage de 'Date non valide':

moment('01/12/2016', 'YYYY-MM-DD', true).format()
"Invalid date"

En mode pardon utilisant une chaîne de formatage, vous obtenez une mauvaise date:

moment('01/12/2016', 'YYYY-MM-DD').format()
"2001-12-20T00:00:00-06:00"

une autre façon serait

$(document).ready(function() {
    var value = $("#unixtime").val(); //this retrieves the unix timestamp
    var dateString = moment.unix(value).calendar(); 
    alert(dateString);
});

0
devon kassian

Je l'ai corrigé comme dans cet exemple.

$scope.myCalendar = new Date(myUnixDate*1000);
<input date-time ng-model="myCalendar" format="DD/MM/YYYY" />
0

Peut-être un peu tard, mais pour les nouvelles questions comme celle-ci, j'utilise ce code:

moment(timestamp, 'X').format('lll');

Vous pouvez modifier le format en fonction de vos besoins et ajouter un fuseau horaire comme ceci:

moment(timestamp, 'X').tz(timezone).format('lll');
0
Eduardo Sanchez G