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?
En utilisant moment.js comme vous l'avez demandé:
var dateString = moment.unix(value).format("MM/DD/YYYY");
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);
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"
new moment(timeStamp,'yyyyMMddHHmmssfff').toDate()
Seulement ça,
moment.unix(date).toDate();
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')
}
$(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);
});
Je l'ai corrigé comme dans cet exemple.
$scope.myCalendar = new Date(myUnixDate*1000);
<input date-time ng-model="myCalendar" format="DD/MM/YYYY" />
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');