diff --git a/src/core/Temporal.pm b/src/core/Temporal.pm index ea303eb2cc8..ecdda49aba1 100644 --- a/src/core/Temporal.pm +++ b/src/core/Temporal.pm @@ -251,7 +251,7 @@ my class DateTime does Dateish { } multi method new(Str $format, :$timezone is copy = 0, :&formatter=&default-formatter) { - $format ~~ /^ (\d**4) '-' (\d\d) '-' (\d\d) T (\d\d) ':' (\d\d) ':' (\d\d) (Z || (<[\-\+]>) (\d\d)(\d\d))? $/ + $format ~~ /^ (\d**4) '-' (\d\d) '-' (\d\d) T (\d\d) ':' (\d\d) ':' (\d\d) (Z || (<[\-\+]>) (\d\d) (':'? (\d\d))? )? $/ or X::Temporal::InvalidFormat.new( invalid-str => $format, target => 'DateTime', @@ -269,7 +269,7 @@ my class DateTime does Dateish { if $6 eq 'Z' { $timezone = 0; } else { - $timezone = (($6[1]*60 + $6[2]) * 60).Int; + $timezone = (($6[1]*60 + ($6[2][0] // 0)) * 60).Int; # RAKUDO: .Int is needed to avoid to avoid the nasty '-0'. $6[0] eq '-' and $timezone = -$timezone; }