2012-12-19 2 views
0

J'autorise les utilisateurs à saisir la date et l'heure dans n'importe quel format, à condition que la méthode Time.parse de Ruby puisse le gérer. Maintenant, j'ai besoin de comparer ces dates en javascript. Existe-t-il quelque chose d'équivalent à la méthode Time.parse de Ruby pour javascript?Javascript équivalent à Ruby Time.parse

J'ai besoin de quelque chose qui peut analyser par exemple "13 octobre 2012 à 8h15". J'ai essayé datejs mais il ne pouvait pas gérer le mot "at". Je préférerais vraiment quelque chose qui ne nécessite qu'un seul appel de fonction.

+0

Une telle chose existe en mode natif dans JS. Vous devrez peut-être créer une solution de rechange pour Date.js. –

+0

Il est hautement improbable que vous trouviez une bibliothèque JS qui accepte une entrée identique à 'Time.parse 'de Ruby. – maerics

+0

Figuré autant mais il est bon de savoir à coup sûr. –

Répondre

0

Datejs a un truc vraiment impressionnant de travailler avec des dates en javascript

+0

Il échoue pour l'analyse "13 octobre 2012 à 08h15" comme je l'ai dit. –

0

Essayez http://momentjs.com/, la meilleure bibliothèque de fois!

+0

Malheureusement, comme datejs il échoue pour l'analyse "Octobre 13 2012 à 08h15" –

2

Le langage JavaScript est difficile (et les implémentations varient) en ce qui concerne le format de date qu'il accepte, donc il n'y a pas d'espoir sans utiliser une bibliothèque.

Date.js est facilement votre meilleur pari; Cependant, comme vous le signalez, il y a certainement des formats qui ont du sens pour les utilisateurs, mais que la bibliothèque ne pouvait pas anticiper.

Pour contourner ce problème, je suggère que vous enveloppez l'analyseur Date.js dans une fonction de lavage personnalisé que vous devez maintenir:

// using Date.js 
function parseDate(str) { 
    var wordsToRemove = ['on', 'at'] // ... 
    , regex = new RegExp('\\b(' + wordsToRemove.join('|') + ')\\b', 'g'); 
    return Date.parse(str.replace(regex, '')); 
} 
+0

Cela pourrait fonctionner. Je me sentirais mieux en utilisant une liste blanche plutôt que d'une liste noire si. –

+0

@ climber247: hein? Comment une liste blanche fonctionnerait-elle pour cela? – maerics

+0

Je devrais regarder dans tous les mots anglais utilisés dans la plupart des formats de date mais quelque chose comme n'est pas dans ['suis', 'pm', 'utc' ...] –

0

C'est un peu en retard, mais nous espérons qu'il sera toujours aider:

Si vous analysez uniquement les chaînes de date locales aux États-Unis, consultez Sherlock.js.

La seule limitation est qu'elle ne prend pas en charge les années ou les dates antérieures. Il peut analyser 'le 13 octobre 2012 à 8h15' mais il retournera un objet Date pour le 13 octobre 2013 à 8h15, puisqu'il regarde toujours vers l'avant. Vous pourriez écrire quelques RegEx, comme /\b20\d\d\b/ pour analyser l'année de la chaîne vous-même si nécessaire.

Divulgation: Je suis le créateur de Sherlock.js

+0

Impressionnant. Merci Neil. Je vais essayer. –