2016-09-13 17 views
0

utimeを使用してファイルを特定のタイムスタンプに更新しようとしています。これを行うには、タイムスタンプの文字列バージョンを「時間オブジェクト」に変換し、次にエポックメソッドを使用してエポックを取得してタイムファイルを更新します。Time-> epochを特定のタイムゾーンから取得する方法

my $yyyymmddhhmmss; # variable holding string version of time. example: 20150512:150632  
my $fileTime = Time::Piece->strptime($yyyymmddhhmmss, '%Y%m%d:%H%M%S'); 
utime $fileTime->epoch, $fileTime->epoch, $outfile; 

はしかし、私たちがしている時間帯と異なるUTCにファイルのタイムスタンプを設定している。手動で余分な秒を追加するほかに、エポックを持っているが、別の方法は、私たちのために秒を押し出していますタイムゾーン?

+3

エポック時間で

Time::Piece->strptime($yyyymmddhhmmss, '%Y%m%d:%H%M%S') 

を交換は、UTCに常に(https://en.wikipedia.org/wiki/Unix_time)[定義による]。 – ThisSuitIsBlackNot

+0

申し訳ありませんが、別の言い方で言えば、私たちのタイムゾーンの日時の1970年1月1日から秒数を取得できますか? – FrankRalphBob

+2

'$ yyyymmddhhmmss'がローカルタイムスタンプを保持している場合は、' localtime-> strptime(...) 'が必要です。 – ThisSuitIsBlackNot

答えて

0

$yyyymmddhhmmssはローカルタイムではありません。

localtime->strptime($yyyymmddhhmmss, '%Y%m%d:%H%M%S') 
関連する問題