我的最终目标是将当前日期和时间与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