web-dev-qa-db-ja.com

Unixタイムスタンプとは何ですか?なぜそれを使用するのですか?

Unixタイムスタンプとは何ですか? PHPでは、日付を操作するときに、関数strtotime()が整数値を出力します-それは何ですか?これについて学習しようとしましたが、満足のいく答えが得られませんでした。特に、なぜstrtotime()を使用して日付を変換する必要があるのですか。

27
user3073602

Unixタイムスタンプとは

簡単に言うと、Unixタイムスタンプは、実行中の合計秒として時間を追跡する方法です。このカウントは、1970年1月1日のUTCのUnixエポックから始まります。したがって、Unixタイムスタンプは、特定の日付とUnixエポックの間の秒数にすぎません。また、地球上のどこにいても、この時点で技術的に変化することはありません。これは、オンラインおよびクライアント側の両方の動的および分散アプリケーションで日付の付いた情報を追跡およびソートするためのコンピューターシステムに非常に役立ちます。 Unixタイムスタンプが多くのウェブマスターによって使用される理由は、それらがすべてのタイムゾーンを一度に表すことができるからです。詳細については、 ウィキペディアの記事 を参照してください。

strtotime()とは何ですか。

名前が示すように、strtotime()関数は、日付文字列をUnixタイムスタンプ(strから時間)に変換するために使用されます。

strtotime() のPHPマニュアルドキュメントから:

strtotime—英語のテキストによる日時の説明をUnixタイムスタンプに解析します

たとえば、日付_25 December 2013_のUnixタイムスタンプを取得する場合、strtotime()を次のように使用します。

_echo strtotime("25 December 2013"), "\n";       // => 1387909800
_

strtotime()は、相対的な時刻と日付の形式も処理できます。たとえば、次のことを考慮してください。

_echo strtotime("+1 month"), "\n";               // => 1390980039
echo strtotime("last day of next month"), "\n"; // => 1391152839
_

これらはいくつかの基本的な例です。 strtotime()も、非常に複雑な日付形式を処理できます。詳細については、 ドキュメント を参照してください。

タイムスタンプはいつ使用すべきですか

Unixタイムスタンプは、地域に関係なく同じように解釈され、タイムゾーンに関係なく同じ時点から計算されます。複数のタイムゾーンで使用されるWebアプリケーションがあり、個々のユーザーの設定を反映する日付/時刻が必要な場合は、タイムスタンプを使用します。

strtotime()の場合、主に日付形式間の変換に使用されます。 strtotime()はほとんどすべての日付文字列を解析できるため、日付文字列をタイムスタンプに変換するために使用されます。タイムスタンプを取得したら、 date() または同様の関数を使用して、好きなようにフォーマットできます。

strtotime()の制限

32ビットシステムでは、整数の最大値は2,147,483,647です。この方法で表すことができる最も遠い時間は、2038年1月19日火曜日の03:14:07 UTCです。これは 2038年問題 とも呼ばれます。

PHPマニュアル のこのメモを参照してください。

タイムスタンプの有効な範囲は、通常1901年12月13日20:45:54 UTCから2038年1月19日03:14:07 UTCまでです。 (これらは、32ビット符号付き整数の最小値と最大値に対応する日付です。)さらに、すべてのプラットフォームが負のタイムスタンプをサポートしているわけではないため、日付範囲がUnixエポック以前に制限されない場合があります。これは、たとえば1970年1月1日より前の日付は、Windows、一部のLinuxディストリビューション、およびその他のいくつかのオペレーティングシステムでは機能しません。 PHP 5.1.0以降のバージョンでは、この制限を克服しています。

DateTimeオブジェクトを使用する

_13 Dec 1901_から_19 Jan 2038_の範囲外の日付で作業している場合は、より広範囲の日付で機能するPHPの DateTime オブジェクトの使用を検討してください。 DateTimeは、どちらの方向でも約2930億年を表すことができます。

DateTimeクラスは、PHPバージョン> = 5.2.0で使用できます。PHPバージョンが> = 5.2.0以上のバージョンを実行している場合は、日付と時刻を扱う場合はDateTimeを使用します。これが最善の方法です。古いPHP=バージョンの場合、アップグレード済み。5.3.0より前のものはすべて古いものです。

  • DateTime::__construct() または DateTime::createFromFormat() を使用して DateTime オブジェクトを作成します。 DateTime::createFromFormat()は、PHP> = 5.3でのみ使用できます。このメソッドを使用すると、他の方法ではstrtotime()
  • DateTime::format() メソッドを使用して、DateTimeオブジェクトを操作したい日付形式に変換します

以下は、DateTimeに関する優れた記事です。

そして棚のための本:

51
Amal Murali