web-dev-qa-db-ja.com

文字列をDateTimeに変換します

次の文字列を解析してDateTimeオブジェクトにする必要があります。
30/Nov/2009:16:29:30 +0100

これを行う簡単な方法はありますか?

PS:上記の文字列をそのまま変換したい。年後のコロンはタイプミスではありません。また、RoRではなくRubyで問題を解決したいと思います。

91
SkaveRat

DateTime.strptime を使用すると、形式を指定し、文字列をDateTimeに変換できます。

93
Kaleb Brasee

これも機能しませんか?

"30/Nov/2009 16:29:30 +0100".to_datetime
84
xentek

私は成功しました:

require 'time'
t = Time.parse(some_string)
42
Automatico

他のポスターのように、Time.parse("02/07/1988")を使用しました。

興味深い落とし穴は、IRBを開いたときにTimeがデフォルトでロードされたが、Time.parseが定義されていなかったことです。 require 'time'を使用して動作させる必要がありました。

これはRuby 2.2でした。

15
declan

これにより、日付の文字列が日時に変換されます。

"05/05/2012".to_time
10
user1425976

中国の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
5
Wayne Conrad