如何将字符串 2012、December、15 转换为 Datetime 对象

How to convert the string 2012 , December, 15 to a Datatime object

我会得到字符串“2012”然后"December"第一次

在下面得到字符串1,15, 30

我应该将它们转换成 Datetime 对象

2012-12-01

2012-12-15

2012-12-30

怎么做?

Date.strptime('2012 December', '%Y %B')
#=> Sat, 01 Dec 2012

date = Date.strptime('2012 December 10', '%Y %B %d')
#=> Mon, 10 Dec 2012

date.strftime("%Y-%m-%d")
#=> "2012-12-10"

你有这个字符串:

[1] pry(main)> str = "2012 December 1,15, 30"
=> "2012 December 1,15, 30"

你想从中得到三个日期(12 月 1 日、15 日和 30 日)。首先,从这个字符串中得到年、月和日:

[2] pry(main)> m = /(?'year'\d*)\s(?'month'[a-zA-Z]*)(?'days'[\d, ]*)/.match str
=> #<MatchData
 "2012 December 1,15, 30"
 year:"2012"
 month:"December"
 days:" 1,15, 30">

然后将 days 拆分为数组并对其进行迭代以将带有年份和月份的日期转换为 Date 对象(您可以使用 Date.strptime 如上所示的 shivam 或 Time.parse):

[10] pry(main)> require 'time'
=> true
[11] pry(main)> m[:days].split(',').collect {|day| Time.parse "#{m[:year]} #{m[:month]} #{day}"}
=> [2012-12-01 00:00:00 +0100,
 2012-12-15 00:00:00 +0100,
 2012-12-30 00:00:00 +0100]