Ruby 红宝石;字符串是否可以解析为“2016-12-01”是一天,“2016-12-01T12:05”是一分钟?
使用香草Ruby(或Rails,但更喜欢香草Ruby) 假设自定义类由我们创建:Ruby 红宝石;字符串是否可以解析为“2016-12-01”是一天,“2016-12-01T12:05”是一分钟?,ruby,parsing,datetime,Ruby,Parsing,Datetime,使用香草Ruby(或Rails,但更喜欢香草Ruby) 假设自定义类由我们创建:年,月,日,小时,分钟,秒,毫秒 在这些课程中,它们与特定的小时、分钟、秒等相关 示例:thisMinute=Minute.new(“2016-12-01T12:05”)=>2016年第12个月第1天第12小时第5分钟 是否可以创建一个函数,以便 foo(“2016”)可以创建Year类的实例 foo(“2016/12”)可以创建Month类的实例 foo(“2016-12-01”)可以创建Day类的实例 foo(
年
,月
,日
,小时
,分钟
,秒
,毫秒
在这些课程中,它们与特定的小时、分钟、秒等相关
示例:thisMinute=Minute.new(“2016-12-01T12:05”)=>2016年第12个月第1天第12小时第5分钟
是否可以创建一个函数,以便
foo(“2016”)
可以创建Year
类的实例
foo(“2016/12”)
可以创建Month
类的实例
foo(“2016-12-01”)
可以创建Day
类的实例
foo(“2016-12-01T12:05”)
可以创建Minute
类的实例
等等
这是陷阱
- 时间格式可能会有所不同(
“20161201”
或)20161201@12pm“
例如)
- 使用这些格式,
Time.parse
将成功解析字符串,但将设置月
、日
、小时
,以便“20161201”
将设置小时值,即使它应该是日
- 检查
==0
(如Time.parse().hour==0
)将失败,因为时间可能是2016-12-01@12am“
- 一种可能的方法是为每个类使用一个解析方法。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"
a='2016-12-01T12:05'
=>“2016-12-01T12:05”
b=DateTime.parse(a)
=> #
b、 strftime(“%M”)#分钟
=> "05"
b、 标准时间(“%H”)#小时
=> "12"
b、 strftime(“%d”)#月日
=> "01"
b、 strftime(“%m”)#月
=> "12"
因此,每个类都将使用不同的stfrtime()参数来筛选您需要的时间戳的任何部分
你在说什么
分钟
课?这是你建造的吗?你当然可以做到,但很难想象它能解决什么问题。你能告诉我们更多关于你试图用这个来解决的问题吗?@tadman-是的,我们已经做了一些事情constructed@Jordan-在注释中解释有点复杂,但我们在图形数据库中有一个UTC时间树,事件连接到树上的节点。唯一的“键”是节点的名称(字符串):(20161201\u 12)-[:ZOOM\u OUT]->(20161201)
。事件节点被添加到树中,如(Event)-[:occurrent\u AT]->(20161201)
。一个事件可以发生在任何级别(例如,不知道什么时候发生了什么,只知道当天发生的事件),因此一天发生的事件不能连接到第二个20161201_u000000
,而应该连接到day节点。我使用了这样的时间实现。看看吧:值得一提的是,虽然这些方法有效,b.minute
、b.day
等等可能更简洁。如果您可以使用.minute
、.hour
等。。。使用它们。strftime将为您提供更多可定制的时间戳组合,以满足您的需求。ex->b.strftime(“%d,%H:%M”)=>“01,12:05”
噢,当然,这两个选项都有效,具体取决于您的要求。只是不要做b.strftime(“%M”)。我想这可能行得通,但这只是解决方案的一半。你有没有一个解决方案来确定用哪个类进行解析?我不太确定那一半是什么。我会以你上面的minute.new为例,在一个minute类中解析分钟数