0

そのため、イベント マネージャー プログラムを作成するチュートリアルに取り組んでいますが、少し行き詰まっています。.csv ファイルから登録データを取得し、人々が登録した時間を抽出するメソッドを構築したいと考えています。しかし、私はそれを機能させるのに苦労しています。これが私がこれまでに持っているものです:

def reg_hour(regtime)
    regtime = DateTime.new
    DateTime.strptime(regtime, "%H")

end

コードを実行すると、次のエラーが発生します。

 `block in _strptime_i': undefined method `sub!' for #<DateTime: -4712-01-01T00:00:00+00:00 (-1/2,0,2299161)> (NoMethodError)

私はかなり混乱しており、どんな助けも大歓迎です。

誰かが興味を持っている場合は、チュートリアルへのリンクを次に示します。 http://tutorials.jumpstartlab.com/projects/eventmanager.html

4

2 に答える 2

1

DateTime.newで何をしていて、regtime変数をオーバーライドしているかわからない(私は自分自身をルビーするのは初めてです)。regtimeがcsvファイルから出ている場合は、おそらく文字列として出ています。おそらく、regdate形式が一貫している限り、正規表現を使用できます。

regdateが「11/12/0810:47」の場合

次に、以下を使用します。

regdate.scan(/\s\d+:/)

["10:"]を返します。おそらく、それを配列変数に格納し、空白とコロンを削除してクリーンアップすることができます。おそらくもっとエレガントな解決策がありますが、それは私の初心者のブルートフォースの方法です。

于 2013-03-14T16:09:50.670 に答える
1

私はあなたの意図を完全に理解しているとは確信していませんが、ここに書き直しました:

require 'time'

def reg_hour(regtime)
    DateTime.strptime(regtime, "%H")
end

d = reg_hour("21/03/2011 14:39:11.642")
puts d.year

これはあなたがやろうとしていることですか?

于 2013-03-14T16:17:56.603 に答える