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 变量(我自己是 ruby​​ 新手)。如果 regtime 来自 csv 文件,它可能以字符串的形式出现。也许您可以使用正则表达式,只要 regdate 格式是一致的。

如果 regdate 是:“11/12/08 10: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 回答