次の文字列を解析してDateTimeオブジェクトにする必要があります。30/Nov/2009:16:29:30 +0100
これを行う簡単な方法はありますか?
PS:上記の文字列をそのまま変換したい。年後のコロンはタイプミスではありません。また、RoRではなくRubyで問題を解決したいと思います。
DateTime.strptime を使用すると、形式を指定し、文字列をDateTimeに変換できます。
これも機能しませんか?
"30/Nov/2009 16:29:30 +0100".to_datetime
私は成功しました:
require 'time'
t = Time.parse(some_string)
他のポスターのように、Time.parse("02/07/1988")
を使用しました。
興味深い落とし穴は、IRBを開いたときにTime
がデフォルトでロードされたが、Time.parse
が定義されていなかったことです。 require 'time'
を使用して動作させる必要がありました。
これはRuby 2.2でした。
これにより、日付の文字列が日時に変換されます。
"05/05/2012".to_time
中国のRails開発者の場合:
DateTime.strptime('2012-12-09 00:01:36', '%Y-%m-%d %H:%M:%S')
=> Sun, 09 Dec 2012 00:01:36 +0000
Ruby 1.8では、ParseDateモジュールはこれと他の多くの日付/時刻形式を変換します。ただし、1年から1時間の間はコロンを適切に処理しません。コロンはタイプミスであり、実際にはスペースであると仮定すると、次のようになります。
#!/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