【问题标题】:PHP - How can I display time correctly?PHP - 如何正确显示时间?
【发布时间】:2015-10-28 14:43:41
【问题描述】:

我正在使用 PHP 查询 AS400 DB2 数据库。时间(ADACTM)保存在表格中,如下所示;

我需要将其转换为人类可读的格式,例如 9:46:23。

我目前正在 PHP 中执行此操作;

$adactm = str_split($fin2['ADACTM']);
$adactm = "$adactm[0]$adactm[1]:$adactm[2]$adactm[3]:$adactm[4]$adactm[5]";

问题是,当时间没有 2 位小时时,PHP 认为数组位置 0 实际上是位置 1。所以时间显示为;

94:62:3

如果有人有办法解决这个问题,将不胜感激。谢谢!

【问题讨论】:

    标签: php sql database db2


    【解决方案1】:

    Pad 拆分前的字符串:

    $rawtime = '94623';
    $padded = str_pad($rawtime, 6, '0', STR_PAD_LEFT); // 094623
    

    然后像以前一样拆分/破坏

    【讨论】:

    • 不错的解决方案...但你会得到 09:46:23 而不是 9:46:23
    • 你的也可以。或者:拆分字符串。计数元素,如有必要,按“0”。
    • 感谢你们两位!我不介意显示前导零,所以我喜欢这个选项,因为它很短。感谢您的帮助!
    • 此外,您可以将填充的数字放入DateTime::createFromFormat 调用中,这样您将获得一个DateTime object,您可以根据需要对其进行格式化/操作:$date = DateTime::createFromFormat('His', str_pad($rawtime, 6, '0', STR_PAD_LEFT));。然后你可以做echo $date->format('H:i:s'); 或者你想输出它。
    【解决方案2】:

    抱歉,没有比这更好的主意了:

    $adactm = str_split($fin2['ADACTM']);
    
    if (count($adactm) == 5) {
        $adactm = "$adactm[0]:$adactm[1]$adactm[2]:$adactm[3]$adactm[4]";
    } else {
        $adactm = "$adactm[0]$adactm[1]:$adactm[2]$adactm[3]:$adactm[4]$adactm[5]";
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-06
      • 1970-01-01
      • 2012-12-21
      • 1970-01-01
      • 2020-11-14
      • 1970-01-01
      • 1970-01-01
      • 2015-06-14
      相关资源
      最近更新 更多