我的最終目標是將當前日期和時間與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對象?
該格式似乎不被默認的DateTime ::格式:: ISO8601被包括在內。請參閱https://metacpan.org/pod/distribution/DateTime-Format-ISO8601/lib/DateTime/Format/ISO8601.pod#5.4.1。最簡單的方法是推出自己的解析器。 – simbabque
以* extended *格式(帶有連字符和冒號分隔符)和* basic *格式的時區具有日期和時間是非常奇怪的。你確定不應該是'-04:00'嗎? – Borodin
@Borodin,是的,'format_cldr(「yyyy-MM-dd'T'HH:mm:ssZ」)'沒有冒號就返回它。我不得不從API字符串中刪除冒號來比較兩者。 – Droidzone