2010-02-09 3 views
4

Я пытаюсь преобразовать 2010-02 в февраль 2010 года. Но я продолжаю получать декабрь 1969 годаphp - mktime или strtotime?

Я пробовал использовать mktime, strtotime и некоторую комбинацию из двух, но до сих пор не был в состоянии сделать это ...

Это то, что я пытался совсем недавно ...

$path_title = date('F, Y', mktime(0,0,0,2,0,2010)); 

ответ

8

Это будет способ сделать это:

$dateString = '2010-02'; 
list($year, $month) = explode('-', $dateString); 
$timeStamp = mktime(0, 0, 0, $month, 1, $year); 
echo date('F, Y', $timestamp); 

Другим способом:

$dateString = '2010-02'; 
$timestamp = strtotime($dateString . '-01'); 
echo date('F, Y', $timestamp); 

strtotime не может обрабатывать неоднозначные даты, как "2010-02", но если вы сделаете это полная дата, когда она должна работать.

В противном случае вы можете захотеть посмотреть что-то вроде DateTime::createFromFormat.

+0

Спасибо за это. И для ссылки, потому что я думаю, что это будет полезно в будущем! – n00b0101

0

Попробуйте это:

$str = '2010-02'; 
echo date('F, Y',mktime(0,0,0,substr($str,-2),1,substr($str,0,4))); 

вы должны убедиться, что вы используете Вэл id до mktime(). В вашем примере, который вы редактировали в вопрос, у вас есть 0 как день, который фактически является первым днем ​​минус один, который помещает вас в предыдущий месяц.