strtotime在某些日期返回false

时间:2014-02-07 08:23:05

标签: php datetime timestamp

我需要将日期字符串转换为以下格式:" d / m / Y" 要转换的日期字符串,并不总是相同,有时是2014年7月2日,有时是2014年2月13日,有时是2014-02-07。

我使用此命令进行转换: date("d/m/Y", strtotime($datestring))

我注意到,有时候我会在01/01/1970因为strtotime返回的错误而得到。 我把它缩小到这个: strtotime("07/02/2014") 返回1409605200这没关系.... strtotime("13/02/2014") 返回false !!!!

在此论坛中阅读有关strtotime的所有帖子。 这个解决方案也没有帮助,因为我事先并不知道具体的格式:

$a = strptime('22-09-2008', '%d-%m-%Y'); $timestamp = mktime(0, 0, 0, $a['tm_mon']+1, $a['tm_mday'], $a['tm_year']+1900);

这里有什么问题? 我需要什么解决方案?

1 个答案:

答案 0 :(得分:2)

你可以这样做:

/** This method will convert a datestring to d/m/Y
* and respect therefore d/m/Y for incoming value
* @params $dateString
* @retun $dateString
*/

function getMyDate($dateString)
{
    $dateString = str_replace('/', '-', $dateString);
    $date = new DateTime($dateString);
    return $date->format('d/m/Y');
}

//----------------------------
$var = '13/02/2014 ';
echo getMyDate($var);
//--> returns: 13/02/2014

$var = '2014-02-07';
echo getMyDate($var);
//--> returns: 07/02/2014

SQL小提琴:http://ideone.com/TTRDTA