2011-02-02 106 views
-1

我向亞馬遜的請求報告GMT已過期。有些人告訴我在請求中使用UTC日期格式,並使用sincronized時間。如何檢索亞馬遜ses請求的utc時間?

的代碼是在Perl和線路:

$params{'Timestamp'} = sprintf("%04d-%02d-%02dT%02d:%02d:%02d.000Z",sub {($_[5]+1900,$_[4]+1,$_[3],$_[2],$_[1],$_[0])}->(gmtime(time))); 

的問題是...我想這UTC格式,但我不知道在所有的Perl語言= S

+0

GMT和UTC僅相差至多0.9秒。對於所有意圖和目的,您可以將它們視爲相同。 「GMT過期」,「UTC日期格式」和「同步時間」是什麼意思? – CanSpice 2011-02-02 17:44:48

+0

[root @ localhost amazon]#./ses-get-stats.pl -k aws-credentials -q 請求時間戳:Wed,02 Feb 2011 16:39:48 GMT過期。它必須在服務器時間300秒內。 – 2011-02-02 18:16:31

回答

3

每當我看到代碼I中的+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。如果您無法將服務器同步到亞馬遜,您的時鐘可能已經漂移。您應該安裝像ntpd這樣的服務來保持時鐘同步 - 如果您遇到困難,請參閱serverfault.com