【问题标题】:How to save dates older than timestamp in PHP如何在 PHP 中保存早于时间戳的日期
【发布时间】:2011-09-22 00:05:12
【问题描述】:

这应该很容易,但我就是找不到答案。

我有一个输入字段,用户可以在其中输入他的生日日期 (DD.MM.YYYY),并使用 strtotime() 将其插入 MySQL 的整数字段中,因为它比日期时间更快(而且我有很多记录) .

但显然会有 1.1.1970 之前的用户,因此时间戳为零。 在网页上,我想显示用户的年龄。因此,如果他出生于 1960 年,他将是 51 岁。 我知道我可以将 MySQL 字段更改为 DATETIME,但 PHP 仍然是计算用户年龄的那个,它使用 UNIX 时间戳。

那么,我应该如何组织呢? 谢谢!

【问题讨论】:

    标签: php mysql timestamp


    【解决方案1】:

    在 PHP 中处理日期和时间时,您应该使用 DateTime 对象。它在解析日期格式时非常灵活,可以计算两个日期之间的差异,并且没有 1970 或 2038 的问题。

    【讨论】:

      【解决方案2】:

      你应该使用 MySQL DATETIME,在 sql 查询中计算。保存到数据库时使用 php date() 函数转换为 mysql DATETIME

      【讨论】:

        【解决方案3】:

        你必须使用 DateTime 对象,你可以在这里看到一个示例代码:

        <?php
        
        $date = new DateTime("1960-05-06");
        $timestamp = $date->getTimestamp();
        echo $timestamp; //-304707600
        
        echo "\n";
        
        $date = new DateTime();
        $date->setTimestamp($timestamp);
        $birthday = $date->format("Y-m-d");
        echo $birthday; //1960-05-06
        
        echo "\n";
        
        echo date("Y") - $date->format("Y"); //55 years old for now (2015)
        
        ?>
        

        输出:

        -304732800
        1960-05-06
        55
        

        在线测试:https://ideone.com/sKjBWS

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-08-10
          • 2020-02-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-03-22
          • 1970-01-01
          • 2020-01-14
          相关资源
          最近更新 更多