【问题标题】:Date output for tenth of seconds?十分之一秒的日期输出?
【发布时间】:2017-01-02 20:49:30
【问题描述】:

我以以下格式将单圈时间存储在数据库中:103.900。

我使用以下日期格式从数据库中输出时间:

date('i:s.U', $video->best_lap)

我得到的是:01:43.103。实际输出时间应显示为 01:43.900。有什么办法可以让 PHP 玩的很好?

【问题讨论】:

  • 来自PHP DocsNote: Since this function only accepts integer timestamps the u format character is only useful when using the date_format() function with user based timestamps created with date_create(). 考虑改用 DateTime 及其format() 方法
  • 谢谢马克,但我不确定这有什么帮助? @马克
  • 对于这样的事情,我建议以十分之一秒为单位存储时间,然后在从数据库中提取时间或之后进行转换。
  • 它的帮助如下:$dto = DateTime::createFromFormat('U.u', '103.900'); var_dump($dto->format('i:s.u'));
  • @Mark 你能把它作为答案提交给你吗?效果很好!

标签: php date php-5.5


【解决方案1】:

PHP 的日期函数(使用 unix 时间戳,它是整数值)不支持小数秒(如 PHP Docs 中所述)

注意: 由于此函数仅接受整数时间戳,因此 u 格式字符仅在将 date_format() 函数与使用 date_create() 创建的基于用户的时间戳一起使用时才有用。

还要注意小数部分格式掩码是u,而不是U(小写,不是大写)

但是,DateTime 对象确实支持小数秒,因此您可以使用:

$dto = DateTime::createFromFormat('U.u', '103.900');
echo $dto->format('i:s.u');

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-29
    • 1970-01-01
    • 2020-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-19
    相关资源
    最近更新 更多