2010-08-31 15 views
13

Biorąc pod uwagę następujące TimeString:PHP - Jak dostać rok, miesiąc, dzień, od czasu ciąg

$str = '2000-11-29'; 

$php_date = getdate($str); 
echo '<pre>'; 
print_r ($php_date); 
echo '</pre>'; 

Jak zdobyć rok/miesiąc/dzień w PHP?

[seconds] => 20 
[minutes] => 33 
[hours] => 18 
[mday] => 31 
[wday] => 3 
[mon] => 12 
[year] => 1969 
[yday] => 364 
[weekday] => Wednesday 
[month] => December 
[0] => 2000 

Nie wiem, dlaczego dostaję 1969 rok.

Dziękuję

Odpowiedz

25

Można użyć strtotime analizować ciąg czasu, i przekazać wynikowy timestamp getdate (lub użyć date sformatować swój czas).

$str = '2000-11-29'; 

if (($timestamp = strtotime($str)) !== false) 
{ 
    $php_date = getdate($timestamp); 
    // or if you want to output a date in year/month/day format: 
    $date = date("Y/m/d", $timestamp); // see the date manual page for format options  
} 
else 
{ 
    echo 'invalid timestamp!'; 
} 

Zauważ, że strtotime powróci false jeśli ciąg czas jest nieprawidłowy lub nie może być analizowany. Gdy znacznik czasu, który próbujesz analizować, jest nieprawidłowy, kończysz z datą 1969-12-31, którą wcześniej spotkałeś.

+0

Bardzo dziękuję – q0987

8

Aktualizacja: Zapomniałem dodać średnik na końcu pierwszego wiersza, spróbuj tego:

<?php  
$str = "2010-08-29"; // Missed semicolon here 
$time = strtotime($str); 

// You can now use date() functions with $time, like 
$weekday = date("l", $time); // Wednesday or whatever date it is  
?> 

miejmy nadzieję, że będzie Ci będzie!

1

Korzystanie styl programowania obiektowego, można to zrobić z DateTime class

$dateFormat = 'Y-m-d'; 
$stringDate = '2000-11-29'; 
$date = DateTime::createFromFormat($dateFormat, $stringDate); 

Następnie można rozkładać datę stosując metodę

$year = $date->format('Y'); // returns a string 

format() Jeśli wolisz format liczbowy, zamiast formatu smyczkowego, można używać intval() Funkcja

$year = intval($date->format('Y')); // returns an integer 

Oto niektóre formaty, które można wykorzystać

  • Y A pełną reprezentację numeryczną roku, 4 cyfry
  • m miesiącu roku, 2 cyfry z wiodącymi zerami
  • d Dzień miesiąca, 2 cyfry z zerami wiodącymi
  • H 24-godzinny format godziny, 2 cyfry s z wiodącymi zerami
  • i Minut, 2 cyfry z wiodącymi zerami
  • s sekund, 2 cyfry z wiodącymi zerami

Oto cała lista formatów, które można użyć: http://php.net/manual/en/function.date.php

3

PHP - Jak zdobyć rok, miesiąc, dzień od czasu ciąg

$dateValue = strtotime($q);      

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

to jest praktyka kodu do wyjaśnienia odpowiedź również po to, aby odnieść korzyści dla przyszłych czytelników –

Powiązane problemy