【问题标题】:Output a negative MySQL Time value with PHP用 PHP 输出一个负的 MySQL 时间值
【发布时间】:2017-11-18 15:46:48
【问题描述】:

我已经在同一个问题上花费了几个小时: 我在我的 MySQL 数据库中存储了一些值,字段类型是 TIME。 通常我会像这样输出我的时间值

echo date("H:i",strtotime($time))

通常这可以正常工作,但现在以负值和零值为例存在一些问题:

 04:12:00 -> will output 04:12 -> fine
-08:18:00 -> will output 01:00 -> why?
 00:00:00 -> will output 01:00 -> why?

【问题讨论】:

  • 要在 PHP 中处理日期和时间,请尝试改用 date_createdate_format。它为您提供更大的灵活性。

标签: php mysql date time


【解决方案1】:

Time !== Duration 没有所谓的负时间....你最后一次将闹钟设置为-2am是什么时候?负时间可能被视为00:00

至于为什么00:00:00 给出01:00,那么我怀疑 strtotime() 默认为 unix 时间戳基准时间(UTC 时间 1970 年 1 月 1 日星期四 00:00:00),并且您的时区设置为 +1:00 小时

如果您想在 PHP 中使用持续时间,请查看 DateTime 对象和DateInterval

【讨论】:

  • 非常感谢,这是有道理的:-)!因此,作为示例,您建议以秒为单位计算两个时间戳之间的持续时间,然后将它们存储到 INTEGER 字段中?
  • 这将是一个更明智的方法,是的;或实际将ISO 8601 持续时间存储为字符串
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-06-09
  • 2020-12-22
  • 1970-01-01
  • 1970-01-01
  • 2019-11-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多