Domanda

Sto cercando di convertire 2010-02 al febbraio 2010. Ma, continuo a ricevere dicembre 1969

Ho provato con mktime, strtotime, e una combinazione dei due, ma ancora non sono stati in grado di farlo ...

Questo è quello che ho cercato di recente ...

$path_title = date('F, Y', mktime(0,0,0,2,0,2010));
È stato utile?

Soluzione

Questo sarebbe un modo per farlo:

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

Un altro modo potrebbe essere:

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

strtotime non può gestire date ambigue come "2010-02", ma se si rendono una data piena dovrebbe funzionare.

In caso contrario, si consiglia di guardare in qualcosa di simile DateTime::createFromFormat .

Altri suggerimenti

Prova questo:

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

È necessario assicurarsi di utilizzare valori validi per mktime(). Nel tuo esempio che si è modificato nella questione, si è 0 come il giorno, che è effettivamente il primo giorno meno uno, che ti mette nel mese precedente.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top