如何在Ruby中将Strftime转换为字符串?

时间:2015-11-12 02:18:00

标签: ruby string strftime

我想将这个strftime解析成一个字符串,然后只是隔离day变量。

 '2015-04-15T11:15:34'

我知道在python中,你可以做类似的事情:

 datetime.strptime(element, "%Y-%m-%dT%H:%M:%S")
输入以下内容后

 from datetime import datetime
 from datetime import timedelta

Ruby中是否有可以高效执行此操作的模块或函数?

2 个答案:

答案 0 :(得分:3)

是。它也被称为strptimehttp://ruby-doc.org/stdlib-2.1.1/libdoc/date/rdoc/DateTime.html#method-c-strptime

  

使用给定模板解析日期和时间的给定表示,并创建日期对象。与strftime不同,strptime不支持标志和宽度的规范。

     

DateTime.strptime('2001-02-03T04:05:06+07:00', '%Y-%m-%dT%H:%M:%S%z') #=> #<DateTime: 2001-02-03T04:05:06+07:00 ...>

在包含所需的date库之后,您可以在生成的DateTime对象上调用#day以获取当天。例如

irb(main):016:0> require 'date'
=> true
irb(main):017:0> date = DateTime.strptime('2015-04-15T11:15:34', "%Y-%m-%dT%H:%M:%S")
=> #<DateTime: 2015-04-15T11:15:34+00:00 ((2457128j,40534s,0n),+0s,2299161j)>
irb(main):018:0> date.day
=> 15

答案 1 :(得分:2)

如果您知道格式为iso8601,则可以使用DateTime.iso8601,否则您可以使用DateTime.parse来处理其他一些约定。

2.2.1 :001 > require 'date'
 => true 
2.2.1 :002 > dt = DateTime.parse('2015-04-15T11:15:34')
 => #<DateTime: 2015-04-15T11:15:34+00:00 ((2457128j,40534s,0n),+0s,2299161j)> 
2.2.1 :003 > dt.year
 => 2015 
2.2.1 :004 > dt.month
 => 4 
2.2.1 :005 > dt.day
 => 15 
2.2.1 :006 > dt.hour
 => 11 
2.2.1 :007 > dt.zone
 => "+00:00"