PHP函数获取日期格式?

PHP函数获取日期格式?,php,sql,datetime,datepicker,Php,Sql,Datetime,Datepicker,我知道如何使用日期格式字符串,以打开date('Y/m/dh:I:s')进入2009/12/18 11:37:45 我想一个函数,可以做相反的-看一个格式化的日期,然后返回格式。PHP中有吗 原因是我们在数据库中以各种格式保存了时间戳,我正在编写一个工具来处理所有旧表并分析日期条目 编辑:所以我想这不是一个简单的方法。我想我可以使用strftime(),它以秒为单位返回自纪元以来的时间。因此,更好的问题是,我可以在mySQL数据库的时间戳字段中使用该时间(以秒为单位)?如果表的结构是一个时间戳而

我知道如何使用日期格式字符串,以打开
date('Y/m/dh:I:s')进入
2009/12/18 11:37:45

我想一个函数,可以做相反的-看一个格式化的日期,然后返回格式。PHP中有吗

原因是我们在数据库中以各种格式保存了时间戳,我正在编写一个工具来处理所有旧表并分析日期条目


编辑:所以我想这不是一个简单的方法。我想我可以使用strftime(),它以秒为单位返回自纪元以来的时间。因此,更好的问题是,我可以在mySQL数据库的时间戳字段中使用该时间(以秒为单位)?如果表的结构是一个时间戳而不是一个varchar(有时是这样),我想这是可行的。

不,没有这样的函数。您需要编写一组正则表达式匹配项来表示所有可能的变化,例如

$variations = array (
    '^([0-9]{4})/[0-9]{2}/[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{4}2$' => 'Y/m/d H:i:s',
    // more here
);

foreach ($dateFromDatabase as $date) {
    foreach ($variations as $regexp => $dateFormat) {
        if (preg_match ('|' . $regexp . '|', $date)) {
            $matches[$dateFromDatabase] = $dateFormat;
            break;
        }
    }
}

// $matches now consists of an array of dates => format

您可以使用regexp来标识特定的日期格式。您可以添加到您的regexp列表中,直到覆盖率达到100%

if(preg_match('/^\d{4}\/\d{2}\/\d{2} \d{2}:\d{2}:\d{2}$/', $Date))
    $Format = 'Y/m/d H:i:s';

等等。

您不需要将日期转换为m/d/Y格式。您可以使用strotime将任何有效日期转换为所需的任何其他日期格式

date( 'format', strtotime($date) );

是的,确实存在此功能:

strotime-将任何英文文本datetime描述解析为Unix时间戳


编辑:好的,函数可能不会返回所使用的格式,但您会得到时间戳,然后,您可以将其存储为任何格式。

将它们全部保存为unix时间戳可能是一个更好的主意,这样您就可以根据用户希望看到的内容轻松地对它们进行动态格式化。

看看。

您可能会在2009/10/07这样的日期遇到本地化问题。是Y/m/d还是Y/d/m?这比我的答案要好,因为你把所有的定义放在一个数组中,而不是一堆代码中。