Вопрос

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

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

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

$path_title = date('F, Y', mktime(0,0,0,2,0,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.

Другие советы

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top