2012-01-23 25 views

Odpowiedz

53

Zastosowanie strtotime():

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

Dlaczego nie '$ result = date (" F Y ", $ time);'? –

+0

Ale mam pytanie, jak php będzie rozróżniać między dniem a miesiącem tutaj? .. – mohitesachin217

+0

jak wyświetlić pierwsze trzy litery miesiąca? Np .: luty na luty – Aswathy

3

Można użyć tego kodu:

$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

Korzystanie date() i strtotime() z docs.

$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 explode() można to zrobić.

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

Prawdopodobnie nie najbardziej wydajny kod, ale tu idzie:

$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

ja osobiście wolę za pomocą tego skrótu. Wyjście będzie wciąż takie same, ale nie trzeba przechowywać miesiąc i rok w oddzielnych zmiennych

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

Mała dygresja na temat korzystania z tej sztuczki, można użyć przecinka, aby oddzielić miesiąc i rok jak tak:

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

'SQLSTATE [42000]: Błąd składniowy lub naruszenie dostępu: 1305 FUNKCJA yii_attendance.DATEPART nie istnieje Wykonywany SQL: SELECT daytime FROM attendance WHERE DATEPART (month, my_date_field) = 8 ORDER BY day DESC' – raxa

3

używam te funkcję, aby uzyskać lat, miesięcy, dni od daty

należy umieścić je w klasie

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

To nie zamienia miesiąca na ** styczeń **, jesteś blisko. F powinno być użyte, patrz http://php.net/manual/en/function.date.php. –

4

będą dzielić mój kod:

W swojej dany dzień Przykład:

$dateValue = '2012-01-05'; 

To będzie tak:

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; 
    } 

i zwróci wartość: 05 stycznia , 2012 - czwartek

Powiązane problemy