【问题标题】:Using PHP to trim/correctly display the Time MySQL datatype使用 PHP 修剪/正确显示 Time MySQL 数据类型
【发布时间】:2011-07-29 13:07:49
【问题描述】:

这里的第一个问题,如果这看起来很明显,请原谅我。我在使用 MySQL 数据库中的“TIME”数据类型时遇到了一些问题,并试图找到最好的方法来修剪时间戳开头的前导零。

更具体地说,我的数据库中有一个歌曲表,在该表中我有一个 song_length 列。此列使用 Time 数据类型,因此表示始终为 hh:mm:ss。

如果我的歌曲只有 3 分 42 秒(例如),我希望它显示为简单:3:42,而不是 00:03:42。是否有内置的 PHP 函数(可能类似于 date())来处理这样的事情?

【问题讨论】:

    标签: php mysql time


    【解决方案1】:

    date()$hours > 0时,你只需要确保使用不同的格式

    $d = new DateTime($time);
    echo $d->format('H') > 0
       ? ltrim($d->format('H:i:s'), '0') 
       : ltrim($d->format('i:s'),   '0');
    

    http://ideone.com/eAWun

    【讨论】:

    • 感谢您的快速帮助,King。这正是我正在寻找的(如果我决定继续将时间保留为 Time 数据类型而不是 Int)。再次感谢!
    • +1 因为在 TIME 字段的上下文中,这可能是一个更好的解决方案!
    【解决方案2】:

    将其拆分为一个数组,然后将每个部分转换为一个 int

    $time = '00:03:42';
    $parts = explode(':', $time);
    $hours = (int) $parts[0];
    $minutes = (int) $parts[1];
    $seconds = (int) $parts[2];
    

    如果我是你,我会将时间存储为表示秒数的整数。

    【讨论】:

    • 谢谢你!除了显而易见的(能够轻松地进行数学计算以确定分钟/小时)之外,将时间存储为 Int 数据类型而不是 Time 数据类型还有其他显着的好处吗?
    • 如果您想按时间列排序,它可能更容易(我不知道 MySQL 是否可以对 TIME 列进行排序)。此外,如果您想 - 比如说 - 获取特定艺术家歌曲的平均长度。
    猜你喜欢
    • 1970-01-01
    • 2014-09-08
    • 1970-01-01
    • 2010-09-20
    • 1970-01-01
    • 1970-01-01
    • 2020-11-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多