首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从ISO8601持续时间到时间和从时间到ISO8601持续时间的转换

从ISO8601持续时间到时间和从时间到ISO8601持续时间的转换
EN

Stack Overflow用户
提问于 2014-05-09 13:04:32
回答 3查看 2.3K关注 0票数 3

我有ISO8601格式的持续时间值,并将其转换为整数秒的时间值,如下所示:

ISO8601格式的持续时间值= "P1Y“。

代码语言:javascript
复制
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持续时间。

EN

回答 3

Stack Overflow用户

发布于 2014-05-09 15:12:44

我建议您使用ruby-duration gem:

代码语言:javascript
复制
time_in_seconds = 100

require 'ruby-duration'

puts Duration.new(:seconds => time_in_seconds).iso8601
# => PT1M40S

或者查看那里的实现和/或窃取它。

票数 3
EN

Stack Overflow用户

发布于 2019-09-15 19:53:44

现在有了ActiveSupport::Duration

代码语言:javascript
复制
[4] pry(main)> ActiveSupport::Duration.parse('PT5S')
=> 5 seconds
[5] pry(main)> ActiveSupport::Duration.parse('PT5S').to_i
=> 5
票数 2
EN

Stack Overflow用户

发布于 2021-05-27 17:48:25

如果你在Rails上,那么

代码语言:javascript
复制
> time_in_seconds = 7425
=> 7425
> ActiveSupport::Duration.build(time_in_seconds).iso8601
=> "PT2H3M45S"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23556973

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档