ホームページ  >  記事  >  バックエンド開発  >  Perlで現在時刻を表す方法

Perlで現在時刻を表す方法

藏色散人
藏色散人オリジナル
2019-02-15 10:59:053300ブラウズ

Perl には、スクリプト内の現在の日付と時刻を検索するための便利な組み込み関数があります。ただし、時間を見つけることについて話すときは、スクリプトを実行しているマシンに現在設定されている時間について話します。たとえば、ローカル マシンで Perl スクリプトを実行している場合、localtime は設定した現在時刻を返し、場合によっては現在のタイム ゾーンに設定されることもあります。

Perlで現在時刻を表す方法

Web サーバー上で同じスクリプトを実行すると、デスクトップ システムの現地時間が現地時間からずれている場合があります。サーバーのタイムゾーンが異なるか、設定が正しくない可能性があります。各マシンは現地時間についてまったく異なる考え方を持っている可能性があり、期待どおりに一致させるには、スクリプト内またはサーバー自体でいくつかの調整が必要になる場合があります。

localtime 関数は、現在の時刻データを含むリストを返しますが、その一部は調整する必要があります。以下のプログラムを実行すると、リスト内の各要素がスペースで区切られて 1 行に出力されることがわかります。

#!/usr/local/bin/perl
@timeData = localtime(time);
print join(' ', @timeData);

数値は大幅に異なる場合がありますが、同様の結果が表示されるはずです。

20 36 8 27 11 105 2 360 0

現在の時刻の要素は次の順序です:

-1 分が経過しました

-数分が経過しました

-午前 0 時

- 月の日

- 週の初めからの月数

- 1900 年からの年数

- 週の始まりからの日数週 (日曜日)

- 年の初めからの日数

- 夏時間が有効かどうか

Perl のローカル時間を読み取り可能にする

localtime によって返される配列内の一部の要素は少し読みにくいです。 1900 年以降の観点から今年を考える人はいないでしょうか? 日付と時刻を明確にするために例を見てみましょう。

このプログラムを実行すると、次のように、より読みやすい日付と時刻が表示されます:

 9:14:42, Wed Dec 28, 2018

それでは、これをより読みやすくするために何をしましたか? バージョンはどうでしょうか? まず、月と曜日の名前を含む 2 つの配列を準備します。

@months = qw(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec);
@weekDays = qw(Sun Mon Tue Wed Thu Fri Sat Sun);

localtime 関数はこれらの要素を 0 ~ 11 と 0 ~ 6 の値で返すため、これらが配列の最適な候補になります。 localtime によって返される値は、配列内の正しい要素にアクセスするための数値アドレスとして使用できます。

$months[$month] $weekDays[$dayOfWeek]

次のステップは、localtime 関数からすべての値を取得することです。この例では、Perl ショートカットを使用して、localtime 配列の各要素を独自の変数に自動的に入れます。どの要素がどの要素であるかを覚えやすいように名前を付けます。

($second, $minute, $hour, $dayOfMonth, $month, $yearOffset, $dayOfWeek, $dayOfYear, $daylightSavings) = localtime();

年の値も調整する必要があります。 localtime は 1900 年からの年数を返すため、現在の年を見つけるには、指定された値に 1900 を加算する必要があることに注意してください。

$year = 1900 + $yearOffset;

Perl で現在の世界時を表現する方法

タイム ゾーンの混乱をすべて回避し、独自の時差を制御したいとします。現在の時刻をローカルタイムで取得すると、常にマシンのタイムゾーン設定に基づいた値が返されます。米国のサーバーは時刻を返しますが、オーストラリアのサーバーはタイムゾーンにより、1 日を通してほぼ完全に異なる時刻を返します。違い。

Perl には、ローカルタイムとまったく同じように動作する 2 番目の便利な時刻表示関数もありますが、マシンのタイムゾーンの固定時刻を返す代わりに、協定世界時 (UTC、グリニッジ標準時または GMT とも呼ばれます) を返します。 )。簡単に言えば、この関数は gmtime

 #!/usr/local/bin/perl
@timeData = gmtime(time);
print join(' ', @timeData);

と呼ばれます。返される時刻が GMT と同じであることを除いて、gmtime 関数と localtime 関数の間に違いはありません。すべてのデータと変換は同じ方法で行われます。

#!/usr/local/bin/perl
@months = qw(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec);
@weekDays = qw(Sun Mon Tue Wed Thu Fri Sat Sun);
($second, $minute, $hour, $dayOfMonth, $month, $yearOffset, $dayOfWeek, $dayOfYear, $daylightSavings) = gmtime();
$year = 1900 + $yearOffset;
$theGMTime = "$hour:$minute:$second, $weekDays[$dayOfWeek] $months[$month] $dayOfMonth, $year";
print $theGMTime;

1.localtime は、スクリプトを実行しているマシンの現在の現地時間を返します。

2.gmtime は、世界グリニッジ標準時、つまり GMT (または UTC) を返します。

3. 戻り値が期待どおりにならない場合があるため、必要に応じて変換してください。

関連する推奨事項: 「Perl チュートリアル http://www.php.cn/course/list/39.html

この記事この記事は、Perl を使用して現在時刻を表す方法について説明しています。困っている友人の役に立てば幸いです。

以上がPerlで現在時刻を表す方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。