web-dev-qa-db-fra.com

Convertir une date normale en timestamp Unix

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.

70
sed
new Date('2012.08.10').getTime() / 1000

Vérifiez le documentation JavaScript Date .

154
fguillen
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.

40
theVinchi

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();
8
Mahus

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.

6
hybrid9
var d = '2016-01-01T00:00:00.000Z';
console.log(new Date(d).valueOf()); // returns the number of milliseconds since the Epoch
5
KARTHIKEYAN.A

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? .

2
Barmar

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

1
Nazar

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'
1
Damodar Bashyal
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() ).

1
dumitru
var datestr = '2012.08.10';
var timestamp = (new Date(datestr.split(".").join("-")).getTime())/1000;
1
OptimusCrime