如何在PHP中获得最早的日期时间?

时间:2016-10-17 21:22:19

标签: php datetime php-7

我的理解是,php中的日期时间表示为特定日期之后的毫秒数(我认为1960年的某个时间?)。如何构建一个表示php中最早允许日期的日期时间?可能的语法示例如下:

$date = new DateTime(0);

但这不起作用。还有其他方法可以做到这一点吗?

感谢您的任何意见。

3 个答案:

答案 0 :(得分:2)

你非常接近

$date = (new DateTime())->setTimestamp(0);

将于1970年1月1日发布

答案 1 :(得分:2)

我认为DateTime对象将接受的最小日期和最大日期如下(在PHP 7.4的64位计算机上,使用PHPUnit进行了演示)。这对于为DateTime和Carbon提供日期验证器上的默认最小值和最大值非常有用。此答案也发布在PHP手册页的DateTime :: __ construct()用户贡献注释中。

如果您想非常精确地进行修改,请修改以下代码以说明时间和时区。

    // smallest date
    $input = '-9999-01-01';
    $dt = new \DateTime($input);
    self::assertEquals($input, $dt->format('Y-m-d'));
    $input = '-10000-12-31';
    $dt = new \DateTime($input);
    self::assertEquals('2000-12-31', $dt->format('Y-m-d'));

    // largest date
    $input = '9999-12-31';
    $dt = new \DateTime($input);
    self::assertEquals($input, $dt->format('Y-m-d'));
    $input = '10000-01-01';
    $dt = new \DateTime($input);
    self::assertEquals('2000-01-01', $dt->format('Y-m-d'));

答案 2 :(得分:1)

echo date('d-m-Y', 0); // outputs: 01-01-1970

epoch 0在1970年1月1日给出了unix时间戳01-01-1970或00:00:00 UTC。