2016-12-02 10 views
0

文字列の日付を使用して、 "%Y%m%d_%H%M"として正しく出力するようにしています。日を除いてすべてが正確に出力されています。それは実際に翌日に戻ってきて、私はそれがなぜなのか全く分かりません。以下はコードと出力です。PerlでDateTimeフィールドをフォーマットする

my $currentTime = strftime("%Y%m%d_%H%M\n", gmtime(time)); 
my $hashTime = strftime("%Y%m%d_%H%M\n", gmtime(UnixDate($user->{'add_date'}, "%s"))); 

$self->Print($user->{'add_date'} ."\n". $currentTime . "\n" . $hashTime); 

出力:

2016-12-02 20:35:43 # Date from the Database 
20161202_2046 # Current GMTime 
20161203_0235 # This should be 20161202_2035? 

それが03として出力していますどのように来ますか?

+0

「UnixDate()」は何をしているようですか? – zdim

+0

これはDate :: Manipパッケージのものです。文字列をUNIXのタイムスタンプに変換するはずです。 – jamadri

+0

また、これを行うためのより良い方法があり、Date :: manipパッケージを使用することができれば、私はそれだけです。 – jamadri

答えて

1

私はそれを理解しました。不思議な人には、新しいコードは以下の通りです。あなたが言うことができるように、$ hashTimeの下で、UnixDateを()を使用する場合

my $currentTime = strftime("%Y%m%d_%H%M\n", gmtime(time)); 
my $hashTime = UnixDate($user->{'add_date'}, "%Y%m%d_%H%M"); 

$self->Print($user->{'add_date'} ."\n". $currentTime . "\n" . $hashTime); 

、あなたはそれがすでにそれをあなたがそれを必要とする方法をフォーマットしているためにstrftimeを使用する必要はありません。

+1

偉大な、私はちょうどこのようなものになっていた – zdim

関連する問題