2010-04-19 2 views
0

Je suis actuellement donné trois valeurs dans une tableParsing à un objet DateTime total Rails

Une valeur de date dans le format% DD-% mname-% yy (c.-à-06-mai-05), et J'analyse cela en utilisant Date.parse (input, true) pour corriger le problème avec les valeurs principales.

On me donne alors une valeur temporelle sous la forme de% hh:% mm:% ss.% Ms (dont je peux prendre ou quitter le ms) et une troisième valeur d'un décalage GMT.

Je ne vois vraiment pas comment convertir ces trois valeurs en un seul objet DateTime qui me permettrait de le manipuler en utilisant la gamme d'outils ruby ​​sans d'abord analyser la seconde valeur en temps réel, en changeant en tant que valeur + ou - n) comme dans +2 ou -6) à un entier signé, puis en l'appliquant puis en analysant tout ceci dans un super objet dateTime.

Il doit y avoir un meilleur moyen. Y a-t-il?

Répondre

0

D'accord afin de créer une valeur datetime avec le temps et la date donnée et de prendre en compte un vous compensez besoin le code suivant

d = DateTime.parse(dateVal+" "+TimeVal) 
     offset = Rational(offset_val,24) 
     d = d.new_offset(offset) 

Alors, prenez votre date, donné à vous dire le 5 mai 2010 et un timeval sous la forme hh: mm: ss

Avec un décalage de + - toute valeur, pour cette instance disent -8

Ensuite, ce code vous allez générer un nouvel objet de la date, pour compenser le montant vous avez besoin

0

Chronic peut être en mesure d'analyser cela (si vous concaténer tout dans une chaîne, peut-être avec quelques modifications) mais je n'ai pas vérifié.

+0

Chronic m'aide mais il ne me permettra pas de corriger le décalage, de toute façon merci, je suis beaucoup plus proche d'une solution. Quand je reçois la solution chronic + datetime + offset, je l'affiche – Schroedinger

Questions connexes