【问题标题】:php microseconds convert to DateTime and backphp 微秒转换为 DateTime 并返回
【发布时间】:2017-02-20 10:00:05
【问题描述】:

我已经存在微秒 timestamp = 1484923604957,我想创建 DateTime 对象或只是日期,然后在表中的 db 中设置 created_at - datetime 列。我不想更改数据库中的类型字段。现在我像这样转换为日期

        $seconds = $mil / 1000;
    return date("Y-m-d H:i:s", $seconds);

在数据库中有2017-01-20 14:46:44

然后当得到没有微秒的日期

created_at = "2016-12-29 14:42:05"

我创建日期时间

        $dateTimeClass = date_create_from_format('Y-m-d H:i:s', $date);
    return $dateTimeClass;

作为回应

   $dateTimeClass->getTimestamp()*1000

这是最后一微秒

如何正确转换为以微秒为单位的 DatTime(或日期)并返回为微秒?

【问题讨论】:

    标签: php mysql datetime


    【解决方案1】:

    您需要将 created_at - DATETIME 的 db 字段类型更改为 DATETIME(6) 微秒。否则,您将无法获得以微秒为单位的准确时间,因为它不会存储在数据库中。

    【讨论】:

    【解决方案2】:

    如果您的对象是用微秒创建的,您可以使用$dateTime->format('u') 将其转换为微秒。请参考the documentation for date

    微秒(在 PHP 5.2.2 中添加)。请注意, date() 将始终生成 000000,因为它采用整数参数,而 DateTime::format() 如果 DateTime 是用微秒创建的,则确实支持微秒。

    【讨论】:

    • 在 db 2017-01-20 14:46:44.000000 然后 $dateTime->format('u') => result = 000000 但需要像 timestamp = 1484923604957
    • 如果你想要一个纪元时间戳,那么你可以使用format('U')
    猜你喜欢
    • 2010-09-15
    • 1970-01-01
    • 1970-01-01
    • 2022-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多