php - mktime или strtotime? - PullRequest
       38

php - mktime или strtotime?

4 голосов
/ 09 февраля 2010

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

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

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

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

Ответы [ 2 ]

8 голосов
/ 09 февраля 2010

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

$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 голосов
/ 09 февраля 2010

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

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

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

...