我有ISO8601格式的持续时间值,并将其转换为整数秒的时间值,如下所示:
ISO8601格式的持续时间值= "P1Y“。
duration = ISO8601::Duration.new(params[:duration]).to_seconds
# duration would have value in float, but I need it in int, so converting it to int.
time_in_seconds = (Time.now - duration).to_i我将值存储在‘time_ in _ the’中。因此,当我检索到的值将是整数,我希望将其转换回ISO8601持续时间格式,以便在转换后得到"P1Y“。
有没有一种快速的方法可以做到这一点?或者,我必须将时间的int值转换为浮点型,然后通过某种方法将其转换为ISO8601持续时间。
发布于 2014-05-09 15:12:44
我建议您使用ruby-duration gem:
time_in_seconds = 100
require 'ruby-duration'
puts Duration.new(:seconds => time_in_seconds).iso8601
# => PT1M40S或者查看那里的实现和/或窃取它。
发布于 2019-09-15 19:53:44
[4] pry(main)> ActiveSupport::Duration.parse('PT5S')
=> 5 seconds
[5] pry(main)> ActiveSupport::Duration.parse('PT5S').to_i
=> 5发布于 2021-05-27 17:48:25
如果你在Rails上,那么
> time_in_seconds = 7425
=> 7425
> ActiveSupport::Duration.build(time_in_seconds).iso8601
=> "PT2H3M45S"https://stackoverflow.com/questions/23556973
复制相似问题