pet*_*ete 9 ruby sorting datetime
我从大型CSV文件中提取日期时间字符串,如下所示:
"11/19/2008 21:56"
Run Code Online (Sandbox Code Playgroud)
我想只提取小时,所以我可以建立一个所有小时的直方图来找到最常见的小时.同样,我想从日期中提取一周中的几天(姓名),并建立最常见日子的直方图.
我是Ruby的新手,查看了这些信息,对于初学者尝试了以下各种形式,但没有运气:
require 'date'
puts DateTime.strptime("11/19/2008 21:56", '%I')
Run Code Online (Sandbox Code Playgroud)
你能否建议一个简单(清晰)的方法来完成上述工作?此外,任何建议如何表示结果将是伟大的.我正在考虑一个小时(24个条目)和一个日期(7个条目)的哈希数组?当我遍历日期时间字符串时,加载它们的最新算法是什么,然后可能最频繁地对它们进行重新排序?谢谢!!
the*_*Man 12
这是出发点:
dt = "11/19/2008 21:56"
require 'date'
DateTime.strptime(dt, '%m/%d/%Y %H:%M') # => #<DateTime: 2008-11-19T21:56:00+00:00 ((2454790j,78960s,0n),+0s,2299161j)>
Run Code Online (Sandbox Code Playgroud)
像"11/19/2008"这样的日期格式在解析时会出现问题,因为默认情况下使用以下格式:
'%d/%m/%Y'
Run Code Online (Sandbox Code Playgroud)
当它看到一个月的价值时,日期会爆炸19.'%m/%d/%Y'并不像世界上那样受欢迎'%d/%m/%Y',这就是Ruby默认的原因.
解析时间戳后,您可以轻松地从中提取部分:
datetime = DateTime.strptime(dt, '%m/%d/%Y %H:%M')
datetime.hour # => 21
datetime.wday # => 3
Run Code Online (Sandbox Code Playgroud)
请注意,wday从返回值0..6,没有1..7,在那里0 = Sunday:
%w[Sunday Monday Tuesday Wednesday Thursday Friday Saturday][datetime.wday]
# => "Wednesday"
Run Code Online (Sandbox Code Playgroud)
作为Date,DateTime和Time支持的一部分,Rails的ActiveSupport有许多有用的方法.使用它们很简单,如果您决定将它们添加到普通的Ruby代码中,那么您可以轻松地选择它们.
| 归档时间: |
|
| 查看次数: |
12898 次 |
| 最近记录: |