PHP函数获取日期格式?
Posted
技术标签:
【中文标题】PHP函数获取日期格式?【英文标题】:PHP function to get the date format? 【发布时间】:2010-12-28 02:40:37 【问题描述】:我知道如何使用日期格式字符串,将date('Y/m/d H:i:s');
转换为2009/12/18 11:37:45
。
我想要一个可以做相反的函数 - 查看格式化的日期然后返回格式。 php里有吗?
原因是我们的数据库中保存了各种格式的时间戳,我正在编写一个工具来处理我们所有的旧表并分析日期条目。
编辑:所以我想没有直接的方法可以做到这一点。我在想我可以使用 strftime(),它以秒为单位返回自纪元以来的时间。所以一个更好的问题是我可以在 mysql 数据库的时间戳字段中使用该时间(以秒为单位)吗?我猜如果表的结构是时间戳而不是 varchar(有时是这样),这将起作用。
【问题讨论】:
您可能会遇到像 2009/10/07 这样的日期的本地化问题。是 Y/m/d 还是 Y/d/m? 【参考方案1】:不,没有这样的功能。您需要编写一组正则表达式匹配来表达所有可能的变化,例如
$variations = array (
'^([0-9]4)/[0-9]2/[0-9]2 [0-9]2:[0-9]2:[0-9]42$' => '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
【讨论】:
这比我的回答要好,因为您将所有定义放在一个数组中,而不是一堆代码。【参考方案2】:是的,确实存在这样的功能:strtotime()
strtotime — 将任何英文文本日期时间描述解析为 Unix 时间戳
编辑:好的,该函数可能不会返回使用的格式,但您将获得时间戳,然后您可以以任何格式存储它。
【讨论】:
【参考方案3】:看看strptime()。
【讨论】:
【参考方案4】:您可以使用正则表达式来识别特定的日期格式。您可以添加到您的正则表达式列表,直到您有 100% 的覆盖率。
if(preg_match('/^\d4\/\d2\/\d2 \d2:\d2:\d2$/', $Date))
$Format = 'Y/m/d H:i:s';
等等……
【讨论】:
【参考方案5】:您不需要将日期转换为 m/d/Y 格式。您可以使用 strtotime 将任何有效日期转换为您想要的任何其他日期格式。
date( 'format', strtotime($date) );
【讨论】:
【参考方案6】:也许将它们全部保存为 unix 时间戳是一个更好的主意,然后您可以根据用户想要看到的内容非常轻松地对其进行格式化。
【讨论】:
以上是关于PHP函数获取日期格式?的主要内容,如果未能解决你的问题,请参考以下文章