我想将这个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中是否有可以高效执行此操作的模块或函数?
答案 0 :(得分:3)
是。它也被称为strptime
。 http://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"