3

Perlコアモジュールだけを使用して、将来の「任意の」日付のタイムゾーン変換を行うことは可能ですか?

タイムゾーン X に Day:month:year, hr:min があり (America/New_York のような完全修飾タイムゾーンであると仮定)、それをタイムゾーン Y (たとえば、Asia/Kolkata) に変換する必要があるとします。

いくつかのメモ:

1) これは OSX (Lion 以上) 用です。

2) DateTime と DateManip を使用してそれを行う方法は知っていますが、これらはコア モジュールではないため、C コンパイラをインストールする必要があります。私は自分のプログラムを「非技術者」ユーザーに配布しようとしています。彼らは助けを借りて perl モジュールのインストールを行うことができますが、XCode やコマンド ライン ツールなどを動作させようとするとバラバラになります。DateTime をインストールしようとした人もいますが、エラーや依存関係に巻き込まれて断念しました。

3) tzset の組み合わせを使用してみました。および ENV TZ - ただし、任意の日付には使用できません - 現地時間でのみ機能します (つまり、「現在の時間」を任意のタイムゾーンに変換できます)

4

1 に答える 1

5

POSIXコア モジュールを使用します。例:

use POSIX;

$ENV{TZ} = 'Europe/Madrid';
$time_t = POSIX::mktime( 10, 30, 17, 4, 4, 113 );
print POSIX::ctime($time_t); #<-- prints: Sat May  4 17:30:10 2013

$ENV{TZ} = 'Europe/London';
print POSIX::ctime($time_t); #<-- prints: Sat May  4 16:30:10 2013
于 2013-05-04T15:32:35.253 に答える