2010-06-30 10 views
0

J'ai utilisé Chronic, l'analyseur de langage naturel et son génial. Le problème que je rencontre maintenant est que je ne peux pas analyser le temps militaire, il me redonne une forme de temps AM/PM qui serait normal pour un utilisateur de voir.rails - analyser le temps militaire en AM/PM, en utilisant chronique?

<%= Chronic.parse("next monday") %> 

rendements => Mon Jul 05 12:00:00 -0500 2010

Est-il possible de revenir en arrière afin que je puisse analyser "Mon 5 juillet 2010 12:00:00 -0500" dans "Lundi 5 juillet 5h00" ou encore mieux "5h00"? Wierd one Je sais, mais je pensais que quelqu'un devait avoir déjà fait face à ce problème auparavant.

Répondre

2

chronique ne retourne pas la chaîne

Mon Jul 05 12:00:00 -0500 2010 

plutôt chronique retourne une instance de la classe Time

Depuis le erb <% = xxx%> veut une chaîne, .to_s est appelé automatiquement. Donc ce qui se passe vraiment:

<%= Chronic.parse("next monday").to_s %> 

Cela ressemble à un format de sortie différent. Utilisez la méthode strftime

<%= Chronic.parse("next monday").strftime("%I:%M %p") %> 
    ==> 05:00 AM 

or 
<%= Chronic.parse("next monday").strftime("%A %B %I:%M %p") %> 
    ==> Monday July 5 05:00 AM 

(je vais le laisser comme un exercice au lecteur de comprendre comment le rendre Juillet 5ème au lieu de 5 Juillet ou 5h00 au lieu de 5h00. Ou demander à un autre Q sur le SO)

Ajouté:

notez également que vous devez être au courant des fuseaux horaires. L'analyse syntaxique utilise l'heure locale et les fuseaux horaires locaux. (Local au serveur.) C'est ce que le -0500 signifie. Vous devez décider comment gérer les fuseaux horaires dans votre application.