我的任务是构建一个简单的Ruby应用程序,它可以做两件事:
使用New命令注册新用户 用工作命令
显示它们的时差它将用于办公楼,目的是跟踪工作总时数。
我也应该像这样从.txt文件中提取这些信息:
New Aaron
New Bertha
New Charles
Work Bertha 06:30 11:12
Work Bertha 12:03 16:17
Work Charles 07:52 17:02
时间仅以分钟和小时表示。我认为没有人会在午夜过夜。这是让我感到困惑的部分,因为我在尝试找到工作时间的差异时遇到了很多麻烦,如预期的输出.txt文件中所示:
Aaron: 0 hours 0 minutes
Bertha: 8 hours 52 minutes
Charles: 9 hours 10 minutes
再次,我仅寻求帮助,找出每个人工作时间的差异。
任何和所有帮助将不胜感激。
答案 0 :(得分:2)
我建议您查看IO#readlines以阅读文本文件的内容。
一旦您能够使用每一行,您就可以使用String#split获取您想要抓取的信息,如下所示:
"Work Bertha 06:30 11:12".split(' ')
#=> ["Work", "Bertha", "06:30", "11:12"]
然后你需要2个时间点之间的经过时间。 Ruby有time个对象,可以从字符串中解析时间,但会将日期设置为当前日期,这对您正在处理的事情不重要。
require 'time'
employee = ["Work", "Bertha", "06:30", "11:12"]
clock_in = Time.parse(employee[2])
#=> 2016-01-12 06:30:00 -0600
clock_out = Time.parse(employee[3])
#=> 2016-01-12 11:12:00 -0600
可以减去时间对象以找到两者之间的时间变化。它会以秒为单位返回时间。您可以在有人进/出时加上所有秒数
clock_out - clock_in
#=> 16920.0
有很多方法可以使这更像人类可读的时间格式。我建议开始here