2013-03-14 8 views
0

Итак, я работаю над учебником, создавая программу диспетчера событий, и я немного застрял. Я хочу создать метод, который будет принимать данные регистрации из CSV-файла, а затем извлекать часы, когда люди регистрируются. Однако у меня проблемы с работой. Вот то, что я до сих пор:Ошибка метода Ruby strptime

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

+1

удалить 'regtime = DateTime.new' и изменить следующую строку' DateTime.strptime (regtime, "% H") ' – varnie

+0

Спасибо за помощь @varnie. Вещь теперь я получаю неправильное количество аргументов (0 для 1) (ArgumentError). Есть идеи? – PaperKraftMike

ответ

1

Не уверен, что вы делаете с DateTime.new и переопределяете переменную regtime (я новичок в Ruby). Если regtime выходит из файла csv, это, вероятно, выходит как строка. Возможно, вы можете использовать регулярное выражение, если формат regdate согласован.

Если regdate является: "11/12/08 10:47"

Затем с помощью:

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

вернуться бы [ "10:"]. Возможно, тогда вы можете сохранить это в переменной массива и очистить его, удалив пробел и двоеточие. Там, вероятно, более элегантное решение, но это мой новичок грубой силы.

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 

Это то, что вы пытаетесь сделать?

+0

То, что я пытаюсь сделать, - это получить информацию об извлечении метода из файла .csv, а затем извлечь час из этой информации. Вот моя последняя попытка: Защиту reg_hour (Регтайм) \t regtime.strptime (Регтайм, «% H») конца от сообщения об ошибке я получаю это выглядит, как он тянет информацию из, но это не делает похоже, знают, что делать с методом strptime. Вот ошибка: 'reg_hour ': undefined method' strptime' for "11/12/08 10:47": String (NoMethodError) Любые идеи @varnie? Я также требовал «дату» и «время» вверху. – PaperKraftMike

Смежные вопросы