有没有人知道是否已经有一种将日期格式化到一定精度的方法,而不需要我写一些东西来重建给定的格式?
例如,假设我有任何格式的日期,但我想使用PHP DateTimeFormat将其转换为Y-m-d H:i:s格式(参见下面PHP中的示例)
$date = new DateTime('2000-01-01');
echo $date->format('Y-m-d H:i:s');
Result: 2000-01-01 00:00:00我真正想要做的是,如果结果中的H:I部分从未包含在原始日期中,则不返回它。
目前,我唯一能想到的方法是使用date_parse_from_format,,找出缺少的部分,然后对日期格式‘Y:i:s’进行某种字符串处理,以省略我不需要的部分(由于这种日期格式可能是任意的)。
我只是不想重新发明方向盘,如果我已经错过了一个功能。
塔,乔
编辑:为了更清楚,日期格式字符串和$date的精度是可变的,所以我不能硬编码格式字符串,而且在得到它之前,我不会知道$date的精度。
发布于 2013-02-21 12:16:53
preg_match是您要寻找的东西,特别是:
if(preg_match('/\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}/',$date)){
//here do the conversion for "Y-m-d H:i:s"
}else{
//here do the conversion for "Y-m-d"
}发布于 2013-02-21 12:18:38
我想你得知道你的约会方式是什么。
<?php
echo 'Current time: ' . date('Y-m-d H:i:s') . "\n";
$format = 'Y-m-d';
$date = DateTime::createFromFormat($format, '2009-02-15');
echo "Format: $format; " . $date->format('Y-m-d H:i:s') . "\n";
$format = 'Y-m-d H:i:s';
$date = DateTime::createFromFormat($format, '2009-02-15 15:16:17');
echo "Format: $format; " . $date->format('Y-m-d H:i:s') . "\n";
$format = 'Y-m-!d H:i:s';
$date = DateTime::createFromFormat($format, '2009-02-15 15:16:17');
echo "Format: $format; " . $date->format('Y-m-d H:i:s') . "\n";
$format = '!d';
$date = DateTime::createFromFormat($format, '15');
echo "Format: $format; " . $date->format('Y-m-d H:i:s') . "\n";
?>发布于 2013-02-21 12:44:35
使用strtotime将几乎任何日期格式转换为时间戳。在那里,您可以使用date()来设置您想要的格式。
有关详细信息,请访问:
http://php.net/manual/en/function.strtotime.php
http://www.php.net/manual/en/function.date.php
编辑: date_parse也可以完成您想要的任务:
http://www.php.net/manual/en/function.date-parse.php
https://stackoverflow.com/questions/15001989
复制相似问题