拆分字符串并使用ruby放入变量

时间:2016-12-23 16:59:28

标签: ruby

我从用户那里得到了以下输入 ' 2016年11月2日星期三19:00:00'。 如何将此字符串拆分为日期和时间,并将其放在带有ruby的变量中? 如何从变量中获取相同的字符串呢?

我看起来在ruby.tried上写了正则表达式和日期文档来编写smth:

require 'date'

puts DateTime.strftime('Wed, 02 Nov 2016 19:00:00', '%a, %d %b %y %H:%M:%S')

得到了错误

test-2.rb:17:in `<main>': undefined method `strftime' for DateTime:Class (NoMethodError)
Did you mean?  strptime
               _strptime 

3 个答案:

答案 0 :(得分:0)

 irb(main):001:0> require 'time'
=> true
irb(main):002:0> dt = DateTime.parse('Wed, 02 Nov 2016 19:00:00')
=> #<DateTime: 2016-11-02T19:00:00+00:00 ((2457695j,68400s,0n),+0s,2299161j)>
irb(main):003:0> dt_date = dt.strftime('%Y/%m/%d')
=> "2016/11/02"
irb(main):004:0> dt_time = dt.strftime('%H:%M:%S')
=> "19:00:00"
irb(main):005:0>

答案 1 :(得分:0)

require 'time'

time = Time.parse("Wed, 02 Nov 2016 19:00:00")

p time #2016-11-02 19:00:00 +0000  
p time.day #2
p time.month #11
p time.year #2016

您可以通过要求模块时间来解析时间。它将采用用户提供的字符串日期,并将其转换为ruby识别的实际日期和时间。然后,您可以使用时间模块提供的内置方法,并将该数据存储到变量中。我希望能回答你的问题。

答案 2 :(得分:0)

解析时间对象

此代码提取Time对象并将其转换回日期,时间和日期时间字符串。

require 'time'

time = Time.parse("Wed, 02 Nov 2016 19:00:00")

date_str     = time.strftime('%a, %d %b %Y')    #=> "Wed, 02 Nov 2016"
time_str     = time.strftime('%T')              #=> "19:00:00"
datetime_str = time.strftime('%a, %d %b %Y %T') #=> "Wed, 02 Nov 2016 19:00:00"

直接拆分字符串

如果您不需要Time对象,您可以将字符串拆分到最后一个空格:

date, time = "Wed, 02 Nov 2016 19:00:00".split(/ (?=\S+$)/)
date # => "Wed, 02 Nov 2016"
time # => "19:00:00"