1

日付を unixtime スタンプに変換するために strtotime を使用しています。年、日付、日はコードに異なる値として渡され、以下のコードを使用してタイムスタンプを生成しています。

$year  = '1961';
$month = '2';
$day   = '15';

$date  = $year."-".$month."-".$day;

echo strtotime($date);

上記のコードは、-27648000 を出力します。年が 1970 年を超える場合、肯定的な結果が出力されます。誰かが私を助けることができるなら、私はまだタイムスタンプで学んでいます。主な目的は、日付を UNIX タイムスタンプに変換することです。

問題は、なぜそれが否定的な結果をもたらすのかということです.私のコーディングは悪いのでしょうか!? 私もmktimeを試しましたが、それでも同じ結果です。

ありがとう、タンメイ

4

6 に答える 6

5

それが期待される動作です。

strtotime1970 年 1 月 1 日からの秒数である UNIX タイムスタンプを返します (閏秒は考慮されません)。それより前の日付については、負の数が返されます。

于 2010-08-12T15:47:15.390 に答える
5

これは、Unix Epoch と関係があります。

参照:date()およびtime()

タイムスタンプの有効な範囲は通常、1901 年 12 月 13 日金曜日 20:45:54 GMT から 2038 年 1 月 19 日火曜日 03:14:07 GMT までです。(これらは、32 ビット符号付き整数の最小値と最大値に対応する日付です)。ただし、PHP 5.1.0 より前のシステムでは、この範囲は1970 年 1 月 1 日から 2038 年 1 月 19 日までに制限されていました。

于 2010-08-12T15:47:06.010 に答える
1

Unix 時間は、1970 年 1 月 1 日の午前 0 時である Unix エポックから始まります。したがって、それより前の日付は負の値が返されます。

于 2010-08-12T15:46:58.010 に答える
0

私はまだタイムスタンプで学んでいますが、

google unix timestamp-> http://en.wikipedia.org/wiki/Unix_time

1970 年 1 月 1 日の協定世界時 (UTC) の午前 0 時から経過した秒数として定義されます。

于 2010-08-12T15:48:46.397 に答える
0

http://en.wikipedia.org/wiki/Unix_time

Unix 時間 (POSIX 時間) は、1970 年 1 月 1 日の協定世界時 (UTC) の午前 0 時から経過した秒数として定義される時点を表すためのシステムであり、閏秒はカウントされません。Unix 系のオペレーティング システムだけでなく、他の多くのコンピューティング システムやファイル形式でも広く使用されています。時間の線形表現でも、UTC の真の表現でもありません (ただし、両方と間違われることがよくあります)。それが表す時間は UTC ですが、標準の UTC 閏秒 (たとえば、1998 年 12 月 31 日 23:59:60) を表していないためです。 )...

1970 年 1 月 1 日より前の時刻は、UTC の開始前に発生したため、負の値です。

于 2010-08-12T15:50:25.553 に答える
0

これは Unix タイムスタンプです。Unix/PHP の基準日は 1970 年 1 月 1 日 00:00 UST で、タイムスタンプは秒単位で測定されます。負の場合は、基準日までの秒数です。正の場合、その後の秒数

于 2010-08-12T15:47:09.183 に答える