使用vanilla Ruby(或Rails,但更喜欢vanilla Ruby),
假设我们创建了自定义类:Year
,Month
,Day
,Hour
,Minute
,Second
,{{1 }}
对于这些类,它们与特定的小时,分钟,秒等有关。
示例:Millisecond
thisMinute = Minute.new("2016-12-01T12:05") => Minute 5 of hour 12 of day 1 of month 12 of year 2016
可以创建foo("2016")
类
Year
可以创建foo("2016/12")
类
Month
可以创建foo("2016-12-01")
类
Day
可以创建foo("2016-12-01T12:05")
类
等等?
时间格式可能会有所不同(例如Minute
或"20161201"
)
使用这些格式,"20161201@12pm"
将成功解析字符串,但会设置Time.parse
,Month
,Day
等,以便Hour
将为小时设置一个值,即使它应该是"20161201"
。
检查Day
(如== 0
中所示)会失败,因为时间可能是Time.parse().hour == 0
答案 0 :(得分:3)
一种可能的方法是为每个类设置一个解析方法。 stftime用于拉出时间戳的特定部分
a = '2016-12-01T12:05'
=> "2016-12-01T12:05"
b = DateTime.parse(a)
=> #<DateTime: 2016-12-01T12:05:00+00:00 ((2457724j,43500s,0n),+0s,2299161j)>
b.strftime("%M") # minute
=> "05"
b.strftime("%H") # hour
=> "12"
b.strftime("%d") # day of month
=> "01"
b.strftime("%m") # month
=> "12"
所以每个类都会使用不同的stfrtime()参数来过滤到你需要的时间戳的部分内容。