ISO 8601時間の長さの形式P3Y6M4DT12H30M5Sをperl単位で秒に変換しようとしています。これを行うライブラリはありますか?私は検索しようとしましたが、私はjsライブラリしか見つけませんでした。 DateTimeとTime :: Momentを見ても解決策はありませんでした。perlでISO8601の継続時間(P3Y6M ...)を秒に変換する
3
A
答えて
6
DateTime::Format::Duration::ISO8601があり、ISO 8601の継続時間文字列をDateTime::Durationオブジェクトに変換できます。それを秒に変換することができます。 in the docs hereを説明するように
use DateTime::Duration;
use DateTime::Format::Duration::ISO8601;
my $format = DateTime::Format::Duration::ISO8601->new;
my $d = $format->parse_duration('P3Y6M4DT12H30M5S');
ただし、日時::継続時間形式は、秒に一年変換するために使用することはできません。
最後の例は、固定変換レートを持たない単位間に変換 が存在しないことを示しています。可能性のみ 変換は、次のとおりです。このようなケースである理由の説明については
years <=> months weeks <=> days hours <=> minutes seconds <=> nanoseconds
、あなたがに
%s
patternでDateTime::Format::Durationを使用することができますDateTime.pmドキュメントのHow DateTime Math Worksセクション
を参照してください。それを回避する。完全な実装は、次のようになります。
use DateTime::Duration;
use DateTime::Format::Duration::ISO8601;
use DateTime::Format::Duration;
my $format = DateTime::Format::Duration::ISO8601->new;
my $d = $format->parse_duration('P3Y6M4DT12H30M5S');
my $output_format = DateTime::Format::Duration->new(pattern => '%s');
print $output_format->format_duration($d);
または、要するに1回だけ必要な場合は短くしてください。
use DateTime::Duration;
use DateTime::Format::Duration::ISO8601;
use DateTime::Format::Duration;
print DateTime::Format::Duration->new(pattern => '%s')
->format_duration(
DateTime::Format::Duration::ISO8601->new->parse_duration('P3Y6M4DT12H30M5S'));
これらの両方が
109254605
関連する問題
- 1. ミリ秒をISO8601の継続時間文字列に変換する
- 2. PowershellでISO8601(私は思う)を時間:分:秒に変換する
- 3. カウントダウン秒を時間に変換する
- 4. 時間単位のT-SQL継続時間:分:秒
- 5. javascriptの時間変換(秒=)
- 6. ジョーダタイム変換時のゾーン時間をミリ秒に換算する
- 7. 変換時間(ミリ秒)の持続時間(BigDecimal値+時間単位)長い
- 8. PHP秒を秒、分、24時間を超える時間に変換する
- 9. SRT秒、持続時間の変換(字幕)時刻形式(PHP)
- 10. 継続時間が10秒未満のビデオを取得する
- 11. 時間、分、秒を変換する - クリーナーコード
- 12. 時間、分、秒を時間に変換する
- 13. カウント継続時間
- 14. NodaTimeは継続時間から秒数を取得します
- 15. 秒を日、時間、分、秒に変換します。
- 16. timestampをミリ秒で時間に変換するには?
- 17. ISO8601の時刻をUNIXのタイムスタンプに変換するコマンドライン
- 18. 時間変数をミリ秒に変換する
- 19. アクティビティログ - 継続時間
- 20. Perl人間が読む時間をミリ秒でEPOCHに
- 21. ミリ秒を時間の文字列に変換する
- 22. NHibernateでのマッピングの継続時間
- 23. 時間を秒単位に変換するには?
- 24. sybase sql秒の値を時間と分と秒に変換する方法
- 25. SimpleDateFormatを使用して時間をミリ秒に変換する
- 26. Prometheusでのクエリースパン継続時間
- 27. 年齢を日、時間、分、および秒で変換する
- 28. 時間121.419419を可読な分/秒に変換する
- 29. jQueryの継続時間メソッド
- 30. 継続時間をISO形式PT1h30MからPHPの分数を基にしたint継続時間に変換する方法は?
再それができる、「*ただし、日時::継続形式は*秒に一年変換するために使用することはできません」と表示します。ただ簡単にはありません。これはそれを行うべきです: 'my $ dt1 = DateTime-> from_epoch(epoch => 0、time_zone => 'floating');私の$ dt2 = $ dt1->クローン - > add_duration($ dur); my $ secs = $ dt2-> delta_ms($ dt1) - > in_units( '秒'); ' – ikegami