我正在使用strtotime将日期转换为unixtime标记。 年份,日期和日期与代码的值不同,我使用以下代码生成时间戳。
$year = '1961';
$month = '2';
$day = '15';
$date = $year."-".$month."-".$day;
echo strtotime($date);
以上代码打印:-27648000对我来说。如果年份高于1970年,它会打印出积极的结果。我还在学习时间戳,如果有人可以帮助我的话。主要目的是将日期转换为unix时间戳。
问题是为什么它会给出负面结果,我编码不好!?我也尝试了mktime,但结果仍然相同。
谢谢, Tanmay
答案 0 :(得分:5)
这与Unix Epoch有关。
时间戳的有效范围通常是从格林尼治标准时间1901年12月13日20:45:54到格林威治标准时间2038年1月19日星期二03:14:07。 (这些是与32位有符号整数的最小值和最大值对应的日期)。但是,在PHP 5.1.0之前,某些系统上的此范围仅限于01-01-1970至19-01-2038
答案 1 :(得分:4)
这是预期的行为。
strtotime
返回一个UNIX时间戳,即自1970年1月1日以来的秒数(不考虑闰秒)。对于之前的日期,它将返回一个负数。
答案 2 :(得分:1)
Unix时间从1970年1月1日午夜的Unix时代开始。因此,在此之前的任何日期将导致返回负值。
答案 3 :(得分:0)
这是一个Unix时间戳。 Unix / PHP基准日期是1970年1月1日00:00 UST,时间戳以秒为单位。如果为负数,则为基准日期之前的秒数;如果是正数,则为
之后的秒数答案 4 :(得分:0)
我还在学习时间戳,
google unix timestamp
- > http://en.wikipedia.org/wiki/Unix_time
定义为自午夜保守协调世界时(UTC)以来经过的秒数 1970年1月1日
答案 5 :(得分:0)
http://en.wikipedia.org/wiki/Unix_time
Unix时间或POSIX时间是用于描述时间点的系统,定义为自1970年1月1日午夜无效协调世界时(UTC)以来经过的秒数,不计算闰秒。它被广泛使用,不仅在类Unix操作系统中,而且在许多其他计算系统和文件格式中使用。它既不是时间的线性表示也不是UTC的真实表示(尽管它经常被误认为是两者),因为它代表的时间是UTC但不代表标准的UTC闰秒(例如1998年12月31日23:59:60) )...
1970年1月1日之前的时间是在UTC开始之前发生的负值。