加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Ruby:如何从日期时间字符串中提取一小时(或一天)

发布时间:2020-12-16 19:22:15 所属栏目:百科 来源:网络整理
导读:我从大型CSV文件中提取日期时间字符串,如下所示: "11/19/2008 21:56" 我想提取小时,所以我可以建立一个所有小时的直方图,以找到最常见的.同样,我想从日期中提取一周中的几天(姓名),并建立最常见日子的直方图. 我是Ruby的新手,查看了这些信息,对于初学者尝试
我从大型CSV文件中提取日期时间字符串,如下所示:
"11/19/2008 21:56"

我想提取小时,所以我可以建立一个所有小时的直方图,以找到最常见的.同样,我想从日期中提取一周中的几天(姓名),并建立最常见日子的直方图.

我是Ruby的新手,查看了这些信息,对于初学者尝试了以下各种形式,但没有运气:

require 'date'
puts DateTime.strptime("11/19/2008 21:56",'%I')

你能否告诉一个简单(清晰)的方法来完成上述工作?此外,任何建议如何表示结果将是伟大的.我正在考虑一个小时(24个条目)和一个日期(7个条目)的哈希数组?当我遍历日期时间字符串时,将它们加载起来的最新算法是什么,然后可能最频繁地对它们进行重新排序?谢谢!!

解决方法

这是出发点:
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)>

像“11/19/2008”这样的日期格式在解析时会出现问题,因为默认情况下使用以下格式:

'%d/%m/%Y'

当月份值为19时,日期会爆炸.’%m /%d /%Y’在全球范围内并不像’%d /%m /%Y’那样受欢迎,这就是Ruby默认的原因.

解析时间戳后,您可以轻松地从中提取部分:

datetime = DateTime.strptime(dt,'%m/%d/%Y %H:%M')
datetime.hour # => 21
datetime.wday # => 3

请注意,wday返回的值为0..6,而不是1..7,其中0 =星期日:

%w[Sunday Monday Tuesday Wednesday Thursday Friday Saturday][datetime.wday] 
# => "Wednesday"

Rails的ActiveSupport有很多useful methods作为其Date,DateTime和Time支持的一部分.使用它们很简单,如果你决定将它们添加到普通的Ruby代码中,那么很容易挑选你想要的东西.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读