1

私は定期的にいくつかの日付データをWebサイトからRailsアプリにスクレイピングして保存していますが、Webサイトに記載されている日付は次の形式です。

11/25/2012 01

これは日付と時間です。

これをデフォルトのDateTime形式に変換するコードを書く必要があります。

YYYY-MM-DD HH:MM:SS

しかし、私はRubyを初めて使用します。

これが私が現在Nokogiriで日付を含む要素をスクレイピングし、テキストを抽出しているコードです。おそらくこれから構築することができます:

datedata = tr.css('td')[0].text

これにより、日付テーブルの行が削られ、テキストが抽出されます。例えば、datedata = "11/25/2012 01"

datedataデータベースに保存するためにデフォルトのDateTime形式に変換できる方法はありますか?参考までに-時間は与えられた唯一の時間であり、それらは私のユースケースに必要なデータであり、分や秒ではありません。

4

3 に答える 3

3

DateTimestrptime機能が使えます

[1] pry(main)> DateTime.strptime("11/25/2012 01", "%m/%d/%Y %H")
=> Sun, 25 Nov 2012 01:00:00 +0000

ActiveRecord に渡すにはこれで十分ですが、これを質問で言及した SQL 日時文字列に変換する場合は、Railsto_formatted_s:dbオプションで使用できます。

[2] pry(main)> DateTime.strptime("11/25/2012 01", "%m/%d/%Y %H").to_formatted_s(:db)
=> "2012-11-25 01:00:00"
于 2013-01-03T05:35:33.987 に答える
0

私は慢性的に使用します:

require 'chronic'
datedata = "11/25/2012 01"
Chronic.parse datedata
#=> 2012-11-25 13:00:00 0800

うーん、その 13:00 は正しくないようです。試してみましょう:

Chronic.parse "#{datedata}:00"
#=> 2012-11-25 01:00:00 0800

その方がいいです。

于 2013-01-03T06:17:53.373 に答える
-1

少しヒント。ユーザーがさまざまなタイム ゾーンの日付を入力すると、時間とともに多くの不快なバグが発生します。私が使用する一般的なルール: UTC でデータベースに時刻を保存します。簡単です: Time オブジェクトには.utcメソッドがあります。ユーザーのローカルオフセットを簡単に計算できるように、ユーザーは自分のタイムゾーン設定を持っている必要があります。

于 2013-01-03T07:35:47.883 に答える