Comment puis-je convertir une date normale 2012.08.10
timestamp unix en javascript?
Violon: http://jsfiddle.net/J2pWj/
J'ai lu de nombreux articles ici qui le convertissent en PHP, Ruby, etc. Mais je dois le faire dans JS.
new Date('2012.08.10').getTime() / 1000
Vérifiez le documentation JavaScript Date .
parseInt((new Date('2012.08.10').getTime() / 1000).toFixed(0))
Il est important d'ajouter la toFixed(0)
pour supprimer les décimales lors de la division par 1000 afin de convertir les millisecondes en secondes.
La fonction .getTime()
renvoie l'horodatage en millisecondes, mais les horodatages Unix réels sont toujours exprimés en secondes.
Vous devriez vérifier le moment.js api, il est très facile à utiliser et a beaucoup de fonctionnalités intégrées.
Je pense que pour votre problème, vous pourriez utiliser quelque chose comme ceci:
var unixTimestamp = moment('2012.08.10', 'YYYY.MM.DD').unix();
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.
var d = '2016-01-01T00:00:00.000Z';
console.log(new Date(d).valueOf()); // returns the number of milliseconds since the Epoch
Vous pouvez utiliser Date.parse () , mais les formats d'entrée qu'il accepte dépendent de la mise en œuvre. Toutefois, si vous pouvez convertir la date au format ISO (AAAA-MM-JJ) , la plupart des implémentations doivent le comprendre.
Voir Pourquoi Date.parse donne-t-il des résultats incorrects? .
Vous pouvez le faire en utilisant la méthode Date.parse ().
Date.parse($("#yourCustomDate).val())
Date.parse ("03.03.2016") sortie-> 1456959600000
Date.parse ("2015-12-12") sortie-> 1449878400000
Après avoir comparé l’horodatage avec celui de PHP, aucun des éléments ci-dessus 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 réalise.
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 au fichier .env:
TZ = 'Australia/Sydney'
Ci-dessus est équivalent à:
process.env.TZ = 'Australia/Sydney'
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 (une division simple ne convient donc pas) et de ne renvoyer que les secondes réellement écoulées (c'est pourquoi ce code utilise Math.floor()
et non Math.round()
).
var datestr = '2012.08.10';
var timestamp = (new Date(datestr.split(".").join("-")).getTime())/1000;