1

我正在使用 strtotime 将日期转换为 unixtime 时间戳。年份、日期和日期作为编码的不同值,我使用下面的代码来生成时间戳。

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

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

echo strtotime($date);

上面的代码为我打印:-27648000。如果年份高于 1970 年,它会打印出积极的结果。如果有人可以帮助我,我仍在学习时间戳。主要目的是将日期转换为 unix 时间戳。

问题是为什么它会给出负面结果,我编码它不好!?我也试过mktime,但结果还是一样。

谢谢,坦梅

4

6 回答 6

5

这与 Unix 纪元有关。

见:date()time()

时间戳的有效范围通常是从 1901 年 12 月 13 日星期五 20:45:54 GMT 到 2038 年 1 月 19 日星期二 03:14:07 GMT。(这些日期对应于 32 位有符号整数的最小值和最大值)。但是,在 PHP 5.1.0 之前,此范围在某些系统上被限制为 01-01-1970 到 19-01-2038

于 2010-08-12T15:47:06.010 回答
5

这是预期的行为。

strtotime返回 UNIX 时间戳,即自 1970 年 1 月 1 日以来的秒数(不考虑闰秒)。对于之前的日期,它将返回一个负数。

于 2010-08-12T15:47:15.390 回答
1

Unix 时间从 Unix 纪元开始,即 1970 年 1 月 1 日午夜。因此,在此之前的任何日期都将导致返回负值。

于 2010-08-12T15:46:58.010 回答
0

这是一个 Unix 时间戳。Unix/PHP 基准日期是 1970 年 1 月 1 日 00:00 UST,时间戳以秒为单位。如果为负数,则为基准日期前的秒数;如果为正,则为秒后的秒数

于 2010-08-12T15:47:09.183 回答
0

我还在学习时间戳,

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

定义为自1970 年 1 月 1 日午夜预测协调世界时 (UTC) 以来经过的秒数

于 2010-08-12T15:48:46.397 回答
0

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

Unix 时间或 POSIX 时间是用于描述时间点的系统,定义为自 1970 年 1 月 1 日午夜预测协调世界时 (UTC) 以来经过的秒数,不包括闰秒。它被广泛使用,不仅在类 Unix 操作系统中,而且在许多其他计算系统和文件格式中。它既不是时间的线性表示,也不是 UTC 的真实表示(尽管它经常被误认为两者),因为它代表的时间是 UTC,但不代表标准的 UTC 闰秒(例如 1998 年 12 月 31 日 23:59:60 )...

1/1/1970 之前的时间是负值,因为它们发生在 UTC 开始之前。

于 2010-08-12T15:50:25.553 回答