J'ai besoin d'analyser la chaîne suivante dans un objet DateTime:30/Nov/2009:16:29:30 +0100
Y a-t-il un moyen facile de faire ceci?
PS: Je veux convertir la chaîne ci-dessus telle quelle. Le côlon après l'année n'est pas une faute de frappe. Je veux aussi résoudre le problème avec Ruby et pas RoR.
DateTime.strptime vous permet de spécifier le format et de convertir une chaîne en dateTime.
Cela ne devrait-il pas fonctionner aussi?
"30/Nov/2009 16:29:30 +0100".to_datetime
J'ai eu du succès avec:
require 'time'
t = Time.parse(some_string)
J'ai utilisé Time.parse("02/07/1988")
, comme certaines des autres affiches.
Un piège intéressant était que Time
était chargé par défaut lorsque j'ai ouvert IRB, mais Time.parse
n'était pas défini. J'ai dû require 'time'
pour le faire fonctionner.
C'est avec Ruby 2.2.
Ceci convertira la chaîne de date en date/heure:
"05/05/2012".to_time
Pour les Chinois Rails:
DateTime.strptime('2012-12-09 00:01:36', '%Y-%m-%d %H:%M:%S')
=> Sun, 09 Dec 2012 00:01:36 +0000
dans Ruby 1.8, le module ParseDate convertira ce format ainsi que de nombreux autres formats de date/heure. Toutefois, il ne traite pas correctement le deux-points entre l’année et l’heure. et est en fait un espace, alors:
#!/usr/bin/Ruby1.8
require 'parsedate'
s = "30/Nov/2009 16:29:30 +0100"
p Time.mktime(*ParseDate.parsedate(s)) # => Mon Nov 30 16:29:30 -0700 2009