2011-02-02 21 views
-1

amazon sesへの私のリクエストは、GMTの有効期限が切れていると報告しています。いくつかの人は私に、アマゾンへのリクエストでUTCの日付形式を使用し、sincronized時間を使用するように指示しました。amazon 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

+0

[root @ localhost amazon]#./ses-get-stats.pl -k aws-credentials -q リクエストタイムスタンプ:Wed、02 Feb 2011 16:39:48 GMTの有効期限が切れています。それはサーバー時間の300秒以内でなければなりません。 –

+1

本当に十分な情報がありません。 $ params {'Timestamp'}の形式はどのような形式ですか?あなたがAmazonを扱うために使用しているモジュールがあれば、それは何ですか?あなたが「まったく知らない」のなら、なぜPerlでコーディングしていますか? – mscha

答えて

3

で知りません+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を参照してください。

+0

は問題を解決しませんでした。リクエストはまだこのように終わっています - > Request timestamp:Thu、03 Feb 2011 02:04:57 GMTは期限切れです。それはサーバー時間の300秒以内でなければなりません。 –

+0

@ファビオ:それはあなたを助けるのに十分な情報ではありません - そのリクエストのタイムスタンプは実際の現在の時間ですか?サーバークロックを同期させましたか? – Ether

関連する問題