Переход от ISO8601 Продолжительность времени, и от времени до ISO8601 Продолжительность

Обновить

December 2018

Просмотры

1.1k раз

2

У меня значение длительности в формате 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_seconds». Поэтому, когда я получить значение будет в междунар, который я хочу, чтобы преобразовать обратно в формат длительности ISO8601, так что я должен получить «P1Y» назад после преобразования.

Есть быстрый способ сделать это? Или я должен преобразовать ИНТ значение времени, чтобы плавать и через какой-то метод преобразования его длительности ISO8601.

1 ответы

3

Я хотел бы предложить вам либо использовать ruby-durationдрагоценный камень:

time_in_seconds = 100

require 'ruby-duration'

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

или взглянуть на реализацию там и / или украсть.