2012-01-23 16 views

risposta

53

Uso strtotime():

$time=strtotime($dateValue); 
$month=date("F",$time); 
$year=date("Y",$time); 
+2

Perché non '$ result = date (" F Y ", $ time);'? –

+0

Ma ho una domanda su come php sta andando a distinguere tra giorno e mese qui? .. – mohitesachin217

+0

come visualizzare le prime tre lettere del mese? Es: febbraio febbraio – Aswathy

3

È possibile utilizzare questo codice:

$dateValue = strtotime('2012-06-05'); 
$year = date('Y',$dateValue); 
$monthName = date('F',$dateValue); 
$monthNo = date('m',$dateValue); 
printf("m=[%s], m=[%d], y=[%s]\n", $monthName, $monthNo, $year); 
8

Utilizzando date() e strtotime() dalla documentazione.

$date = "2012-01-05"; 

$year = date('Y', strtotime($date)); 

$month = date('F', strtotime($date)); 

echo $month 
2
$dateValue = '2012-01-05'; 
$yeararray = explode("-", $dateValue); 

echo "Year : ". $yeararray[0]; 
echo "Month : ". date('F', mktime(0, 0, 0, $yeararray[1])); 

Usiong esplodere() questo può essere fatto.

2
$dateValue = '2012-01-05'; 
$year = date('Y',strtotime($dateValue)); 
$month = date('F',strtotime($dateValue)); 
5

Probabilmente non è il codice più efficiente, ma qui va:

$dateElements = explode('-', $dateValue); 
$year = $dateElements[0]; 

echo $year; //2012 

switch ($dateElements[1]) { 

    case '01' : $mo = "January"; 
        break; 

    case '02' : $mo = "February"; 
        break; 

    case '03' : $mo = "March"; 
        break; 

    . 
    . 
    . 

    case '12' : $mo = "December"; 
        break; 


} 

echo $mo;  //January 
0

Io personalmente preferisco utilizzare questa scorciatoia. L'uscita sarà ancora lo stesso, ma non necessario memorizzare il mese e l'anno in variabili separate

$dateValue = '2012-01-05'; 
$formattedValue = date("F Y", strtotime($dateValue)); 
echo $formattedValue; //Output should be January 2012 

Una piccola nota a margine sull'utilizzo di questo trucco, è possibile utilizzare una virgola di separare il mese e l'anno come così:

$formattedValue = date("F, Y", strtotime($dateValue)); 
echo $formattedValue //Output should be January, 2012 
+0

'SQLSTATE [42000]: Errore di sintassi o violazione di accesso: 1305 FUNZIONE yii_attendance.DATEPART non esiste L'SQL in esecuzione è stato: SELECT diurno FROM presenza WHERE DATEPART (month, my_date_field) = 8 ORDER BY day DESC' – raxa

3

sto usando queste funzioni per ottenere l'anno, il mese, il giorno dalla data

li si dovrebbe mettere in una classe

public function getYear($pdate) { 
     $date = DateTime::createFromFormat("Y-m-d", $pdate); 
     return $date->format("Y"); 
    } 

    public function getMonth($pdate) { 
     $date = DateTime::createFromFormat("Y-m-d", $pdate); 
     return $date->format("m"); 
    } 

    public function getDay($pdate) { 
     $date = DateTime::createFromFormat("Y-m-d", $pdate); 
     return $date->format("d"); 
    } 
-2
$dateValue = strtotime($q); 

$yr = date("Y", $dateValue) ." "; 
$mon = date("m", $dateValue)." "; 
$date = date("d", $dateValue); 
+0

Questo non converte il mese in ** Gennaio **, sei vicino però. F dovrebbe essere usato, vedi http://php.net/manual/en/function.date.php. –

4

voglio condividere il mio codice:

Nella tua data determinata esempio:

$dateValue = '2012-01-05'; 

andrà in questo modo:

dateName($dateValue); 



    function dateName($date) { 

     $result = ""; 

     $convert_date = strtotime($date); 
     $month = date('F',$convert_date); 
     $year = date('Y',$convert_date); 
     $name_day = date('l',$convert_date); 
     $day = date('j',$convert_date); 


     $result = $month . " " . $day . ", " . $year . " - " . $name_day; 

     return $result; 
    } 

e restituirà un valore: 5 gennaio , 2012 - giovedì

Problemi correlati