2009-11-24 7 views
52

Je suis afficher la date et l'heure comme celui-ciConversion date et l'heure Unix Timestamp

24-novembre-2009 17:57:35

Je voudrais le convertir en un horodatage unix pour pouvoir le manipuler facilement. J'aurais besoin d'utiliser regex pour faire correspondre chaque partie de la chaîne puis élaborer l'horodatage unix à partir de cela.

Je suis affreux avec regex mais je suis venu avec cela. Veuillez suggérer des améliorations ^.^

/((\d){2}+)-((Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)+)-((\d){4}+) ((\d){2}+):((\d){2}+):((\d){2}+)/gi 

Comment est-ce que je peux faire ceci?

+0

commentaire latéral complet, mais chaque fois que je vois votre nom, je pense que "Ben Shalock Ben verrouillage" (Ref: http://www.discogs.com/House-Of-Pain-Shamrocks-And-Shenanigans-Boom -Shalock-Lock-Boom/release/229941 :) –

+1

Mon frère jumeau maléfique, on ne parle pas de lui. –

+0

double: http://stackoverflow.com/questions/1457607/how-to-convert-a-gmt-timestamp-to-unix-timestamp-javascript et ici http://stackoverflow.com/questions/ 1416296/parsing-a-date-en-format-long-from-atom-feed –

Répondre

85

Si vous avez juste besoin d'une bonne fonction d'analyse de date, je regarderais date.js. Cela prendra à peu près n'importe quelle chaîne de date que vous pouvez lancer, et vous retournera un objet Date JavaScript. Une fois que vous avez un objet Date, vous pouvez appeler sa méthode getTime(), qui vous donnera des millisecondes depuis le 1er janvier 1970. Il suffit de diviser ce résultat par 1000 pour obtenir la valeur d'horodatage unix.

Dans le code, il suffit d'inclure date.js, puis:

var unixtime = Date.parse("24-Nov-2009 17:57:35").getTime()/1000 
+6

Vous n'avez même pas besoin de la bibliothèque pour analyser ce format, n'est-ce pas? – Dexter

+1

Il est à noter que sans date.js, Date.parse prendra une chaîne et retournera un horodatage unix. Mais c'est très strict sur le format. Dans l'exemple de l'OP, vous auriez besoin de string.replace ('-', '/'). À part ça, je suis à peu près sûr que cela fonctionnerait dans tous les navigateurs modernes. Je suis d'accord que date.js est beaucoup plus fiable cependant. – Marco

+4

respectez votre expression rationnelle. Une bibliothèque javascript localisée est excessive si vous utilisez un format de date fixe. Si vous avez le contrôle sur ce format, vous devriez envisager d'utiliser quelque chose de plus neutre et plus facile à analyser, comme ISO8601. – peller

52

On dirait que getTime est fonctionne pas sur la réponse ci-dessus.

Date.parse(currentDate)/1000 
+0

Je viens de copier Date.parse ('19 -04-2015 18:31:00 ')/1000 cela dans la console du navigateur et il donne NaN pouvez-vous donner une solution @chovy –

+2

Je suppose que votre date est pas correct formaté. Vous pouvez également utiliser le moment (datestring) .unix() – chovy

+0

la date est au format jj-mm-aa H: i: s. Est-ce que je fais mal? –

2

Vous pouvez utiliser la fonction Date.getTime(), ou l'objet lui-même qui Date lorsqu'il est divisé retourne le temps en millisecondes.

var d = new Date(); 

d/1000 
> 1510329641.84 

d.getTime()/1000 
> 1510329641.84