Ruby:如何计算 CSV 文件中给定 2 个日期时间的持续时间?

发布于 2024-07-27 21:47:57 字数 212 浏览 2 评论 0原文

我有许多包含开始和结束时间的 CSV 文件。 我可以使用 FasterCSV 来解析文件,但我不知道在 Ruby 中获取持续时间的最佳方法。 以下是为 CSV 文件的每一行生成的哈希值。

start time: Mon Jul 20 18:25:17 -0400 2009
end time: Mon Jul 20 18:49:43 -0400 2009

I have a number of CSV files which contain start and finish times. I can use FasterCSV to parse the files, but I don't know the best way to get the duration in Ruby. Here are the values in my hash generated for each row of the CSV files.

start time: Mon Jul 20 18:25:17 -0400 2009
end time: Mon Jul 20 18:49:43 -0400 2009

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

无戏配角 2024-08-03 21:47:57

不确定它是否是“最好的”,但您可以使用例如 DateTime 类:

require 'date'

d1 = DateTime.parse("Mon Jul 20 18:25:17 -0400 2009")
d2 = DateTime.parse("Mon Jul 21 18:25:17 -0400 2009")

puts "Duration is #{(d2-d1).to_f} days"

Not sure if it is the "best" but you can use e.g. DateTime class for this:

require 'date'

d1 = DateTime.parse("Mon Jul 20 18:25:17 -0400 2009")
d2 = DateTime.parse("Mon Jul 21 18:25:17 -0400 2009")

puts "Duration is #{(d2-d1).to_f} days"
一曲琵琶半遮面シ 2024-08-03 21:47:57

您可以通过用一个日期时间减去另一个日期时间来获得持续时间。 只要包含 :date_time 转换器,您就可以从 FasterCSV 获取 DateTime 对象。 例如:

FasterCSV.foreach(some_file, :converters => [:date_time]) do |row|
    #blah
end

或者,您可以使用 DateTime#parse 自行转换它们。

从那里,您可以使用 Date#day_fraction_to_time 获取包含以下内容的数组: [小时、分钟、秒、fraction_of_a_second],我认为这比一天中的一小部分更容易使用。

根据您想要显示它们的方式,这个问题的答案。 这些答案适用于 Rails,但您始终可以包含 Rails 中的必要部分,或者只需查看函数的源代码(可在 Rails 文档中找到)来了解它们是如何实现的。 这是不言自明的。

You can get the duration by subtracting one DateTime from another. You'll get DateTime objects from FasterCSV as long if you include the :date_time converter. For example:

FasterCSV.foreach(some_file, :converters => [:date_time]) do |row|
    #blah
end

Or, you could just convert them yourself using DateTime#parse.

From there, you can use Date#day_fraction_to_time to get an array containing [hours, minutes, seconds, fraction_of_a_second], which I think is easier to work with than just the fraction of the day.

Depending on how you want to display them, there's probably information that will help you in the answers of this question. Those answers are for Rails, but you can always include the necessary parts from Rails, or just look at the source of the functions (available in the Rails documentation) to see how they do it. It's fairly self-explanatory.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文