Comment puis-je convertir une date normale 2012.08.10
en horodatage Unix en javascript?
Fiddle: http://jsfiddle.net/J2pWj/
J'ai vu de nombreux articles ici qui le convertissent en PHP, Ruby, etc ... Mais je dois le faire dans JS.
Comment puis-je convertir une date normale 2012.08.10
en horodatage Unix en javascript?
Fiddle: http://jsfiddle.net/J2pWj/
J'ai vu de nombreux articles ici qui le convertissent en PHP, Ruby, etc ... Mais je dois le faire dans JS.
unix timestamp
est si fondamental dans toute l'ingénierie et l'informatique. J'aimerais qu'il y ait une méthode de commodité intégrée. J'utilise actuellementMath.floor((+new Date()) / 1000);
Réponses:
new Date('2012.08.10').getTime() / 1000
Consultez la documentation JavaScript Date .
parseInt((new Date('2012.08.10').getTime() / 1000).toFixed(0))
Il est important d'ajouter le toFixed(0)
pour supprimer les décimales lors de la division par 1000 pour convertir des millisecondes en secondes.
La .getTime()
fonction renvoie l'horodatage en millisecondes, mais les vrais horodatages Unix sont toujours en secondes.
var d = '2016-01-01T00:00:00.000Z';
console.log(new Date(d).valueOf()); // returns the number of milliseconds since the epoch
Vous pouvez simplement utiliser l'opérateur unaire +
(+new Date('2012.08.10')/1000).toFixed(0);
http://xkr.us/articles/javascript/unary-add/ - regardez sous Dates.
/
c'est déjà un opérateur mathématique. De plus, toFixed
renvoie une chaîne et non un nombre, au cas où le type serait important.
Vous pouvez utiliser Date.parse () , mais les formats d'entrée qu'il accepte dépendent de l'implémentation. Cependant, si vous pouvez convertir la date au format ISO (AAAA-MM-JJ) , la plupart des implémentations devraient le comprendre.
Voir Pourquoi Date.parse donne-t-il des résultats incorrects? .
var date = new Date('2012.08.10');
var unixTimeStamp = Math.floor(date.getTime() / 1000);
Dans ce cas, il est important de ne renvoyer qu'un nombre entier (donc une simple division ne fera pas l'affaire), et aussi de ne renvoyer que les secondes réellement écoulées (c'est pourquoi ce code utilise Math.floor()
et non Math.round()
).
Vous pouvez le faire en utilisant la méthode Date.parse ().
Date.parse($("#yourCustomDate).val())
Sortie Date.parse ("03.03.2016") -> 1456959600000
Sortie Date.parse ("2015-12-12") -> 1449878400000
var datestr = '2012.08.10';
var timestamp = (new Date(datestr.split(".").join("-")).getTime())/1000;
Après avoir comparé l'horodatage avec celui de PHP, rien de ce qui précède ne semble correct pour mon fuseau horaire. Le code ci-dessous m'a donné le même résultat que PHP, ce qui est le plus important pour le projet que je fais.
function getTimeStamp(input) {
var parts = input.trim().split(' ');
var date = parts[0].split('-');
var time = (parts[1] ? parts[1] : '00:00:00').split(':');
// NOTE:: Month: 0 = January - 11 = December.
var d = new Date(date[0],date[1]-1,date[2],time[0],time[1],time[2]);
return d.getTime() / 1000;
}
// USAGE::
var start = getTimeStamp('2017-08-10');
var end = getTimeStamp('2017-08-10 23:59:59');
console.log(start + ' - ' + end);
J'utilise ceci sur NodeJS, et nous avons le fuseau horaire «Australie / Sydney». Donc, j'ai dû ajouter ceci sur le fichier .env:
TZ = 'Australia/Sydney'
Ci-dessus équivaut à:
process.env.TZ = 'Australia/Sydney'