首页 > 解决方案 > 转换日期 (PHP)

问题描述

我正在使用JDF来转换面板中的数据库日期。我的编程语言是php并且我正在使用while循环来显示数据。数据库日期类型为datetime。例如:2018-07-21 11:14:19.678896

<?php
Include_once "jdf.php";
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
    $array = explode(' ', $row['date']);
    list($year, $month, $day) = explode('-', $array[0]);
    list($hour, $minute, $second) = explode(':', $array[1]);
    $timestamp = mktime($hour, $minute, $second, $month, $day, $year);
    date_default_timezone_set("Asia/Tehran");
    $converted_date = jdate("Y/m/d H:i:s", $timestamp);
    echo $row['full_name'] . ", reg date:" . $converted_date;
}

当我运行代码时,Y/m/d变为转换H:i:s 第一行变为转换。我真的不知道为什么......
你能帮帮我吗?

标签: phpdatedatetime

解决方案


使用内置DateTime类来处理数据可能更简单:

while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
    $date = date_create_from_format('Y-m-d H:i:s.u', $row['date'], new DateTimeZone('UTC'));
    $date->setTimeZone(new DateTimeZone('Asia/Tehran'));
    $converted_date = jdate('Y/m/d H:i:s', (int)$date->format('U'));
    echo $row['full_name'] . ", reg date:" . $converted_date;
}

输出:

2018/07/21 15:44:19

3v4l.org 上的演示


推荐阅读