一尘不染

管理PHP和MySQL之间的日期格式差异

mysql

我正在编写我的第一个PHP应用程序,该应用程序必须直接处理日期,从而直接处理PHP和MySQL具有不同日期格式的事实。

我的问题是:解决这种差异的最优雅的方法是什么?

我有以下两个功能来管理使用php的差异:

function mysql_date($php_date)  {
    return date( 'Y-m-d H:i:s', $php_date );
}

function php_date($mysql_date) {
    $val = explode(" ",$mysql_date);
    $date = explode("-",$val[0]);
    $time = explode(":",$val[1]);
    return mktime($time[0],$time[1],$time[2],$date[1],$date[2],$date[0]);
}

有没有更简单的方法可以直接在我的SQL查询中进行管理?

还是可以建议其他更优雅的方式来解决此问题?


阅读 248

收藏
2020-05-17

共1个答案

一尘不染

自PHP
5.2起(大约),PHP具有一个内置的用于处理日期和时间的类/对象,称为DateTime。在空虚的情况下,使用内置函数总比弄乱那些杂乱的细节总是更好。

DateTime构造函数(或date_create函数)接受strToTime可以理解的任何格式的日期。您只需要知道strToTime就是神奇的伏都教就可以正确识别几乎任何字符串格式的日期。当我第一次遇到strToTime时,我有与您现在相同的内部反应(“这是胡说八道/似乎不可靠”)。不是。它只是以您自己对日期的脆弱理解永远都不会的方式工作(如果您认为您理解日期,那么您就不会。请相信我。)

因此,从MySQL获取信息作为Date / Time字符串,然后立即创建一个PHP
date对象。当/如果您再次需要日期作为字符串时,请使用date_format方法(带有一些方便的常量)。

2020-05-17