Всякий раз, когда я вижу +1900
в коде, я съеживаюсь, потому что, как правило, нет необходимости делать такие низкоуровневые вычисления даты и времени вручную. Вместо этого используйте библиотеки, такие как DateTime , чтобы выполнить все вычисления и форматирование за вас:
use DateTime;
use Time::HiRes 'time';
my $dt = DateTime->from_epoch(epoch => time, time_zone => 'UTC');
my $timestamp_string = $dt->strftime('%FT%T.%3NZ');
производит: 2011-02-02T18:37:03.145Z
PS. Если у вас возникли проблемы с синхронизацией вашего сервера с Amazon, ваши часы, вероятно, сместились. Вы должны установить службу типа ntpd, чтобы синхронизировать ваши часы - см. serverfault.com , если у вас возникли трудности.