Pergunta

Estou tentando converter 2010-02 a fevereiro de 2010. Mas continuo chegando em dezembro de 1969

Eu tentei usar o MKTime, o StrTotime e alguma combinação dos dois, mas ainda não consegui fazê -lo ...

Isso é o que tentei mais recentemente ...

$path_title = date('F, Y', mktime(0,0,0,2,0,2010));
Foi útil?

Solução

Esta seria uma maneira de fazer isso:

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

Outra maneira seria:

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

strtotime Não é possível lidar com datas ambíguas como "2010-02", mas se você fizer uma data completa, ele deve funcionar.

Caso contrário, você pode querer olhar para algo como DateTime::createFromFormat.

Outras dicas

Experimente isso:

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

Você deve garantir que use valores válidos para mktime(). No seu exemplo que você editou em questão, você tem 0 Como o dia, que é efetivamente o primeiro dia menos um, o que o coloca no mês anterior.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top