最終的な目的は、現在の日付と時刻をISO8601形式のTVMaze APIによって返されたものと比較して、新しいテレビ番組が放映されているかどうかを判断することです。ISO8601に準拠した文字列をperlのDateTimeオブジェクトに解析するには?
use strict;
use warnings;
use feature 'say';
use DateTime;
my $curmytime = DateTime->now()->format_cldr("yyyy-MM-dd'T'HH:mm:ssZ");
# Output is: Time now in UTC:2017-07-17T10:44:52+0000
say "Time now in UTC:". $curmytime;
my $strtobeparsed = '2017-04-09T21:00:00-0400';
# Next, parse the string "2017-04-09T21:00:00-0400" to a DateTime object
文字列をDateTimeオブジェクトに解析するにはどうすればよいですか?
のようにそれを使用することができます。 https://metacpan.org/pod/distribution/DateTime-Format-ISO8601/lib/DateTime/Format/ISO8601.pod#5.4.1を参照してください。最も簡単な方法は、独自のパーサをロールすることです。 – simbabque
日付と時刻を*拡張*形式(ハイフンとコロン区切り記号付き)ではなく、*基本*形式のタイムゾーンにすることは非常に奇妙です。 '-04:00'ではないはずですか? – Borodin
@Borodin、はい、 'format_cldr(" yyyy-MM-dd'T'HH:mm:ssZ ")'はコロンなしで返します。両方を比較するには、API文字列からコロンを削除する必要がありました。 – Droidzone