2010-09-06 20 views
7

"2011/07/01" (1 Temmuz 2011) gibi bir tarihi temsil eden bir dizem varsa, bunu daha okunabilir formlarda nasıl çıkarırdım:Bir tarih dizgesini PHP'de biçimlendirin

Ayrıca
1 July 2011 
1 Jul 2011 (month as three letters) 

ve bunun akıllıca "2011/07/01" gibi tarih aralıklarını yapmak nasıl "2011/07/11"

1 - 11 July 2001 

olarak ('Temmuz' ve '2011 tekrarlamadan için 'bu durumda'

cevap

16

NullUserException belirtildiği gibi, tarih dönüştürmek için strtotime kullanabilirsiniz makyaj zaman damgaları dizeleri. İlk tarih için farklı bir tarih biçimi kullanarak 'akıllı' aralıkları, yaş, aylara ve günlere karşılaştırarak çıktı saptanabilmektedir: Ben strtotimeVEstrftime kullanacağı

$date1 = "2011/07/01"; 
$date2 = "2011/07/11"; 

$t1 = strtotime($date1); 
$t2 = strtotime($date2); 

// get date and time information from timestamps 
$d1 = getdate($t1); 
$d2 = getdate($t2); 

// three possible formats for the first date 
$long = "j F Y"; 
$medium = "j F"; 
$short = "j"; 

// decide which format to use 
if ($d1["year"] != $d2["year"]) { 
    $first_format = $long; 
} elseif ($d1["mon"] != $d2["mon"]) { 
    $first_format = $medium; 
} else { 
    $first_format = $short; 
} 

printf("%s - %s\n", date($first_format, $t1), date($long, $t2)); 
+0

Büyük, Teşekkürler. Mükemmel çözüm. – cannyboy

17

'i kullanarak tarihinizi bir zaman damgasına dönüştürebilirsiniz.ve sonra bu zaman damgası üzerinde date() kullanın. İkincisi ise

$date = date("j F Y", strtotime("2011/07/01")); // 1 July 2011 
$date = date("j M Y", strtotime("2011/07/01")); // 1 Jul 2011 
1

: sizin örnek üzerinde

$time1 = time(); 
$time2 = $time1 + 345600; // 4 days 
if(date("j",$time1) != date("j",$time2) && date("FY",$time1) == date("FY",$time2)){ 
    echo date("j",$time1)." - ".date("j F Y",$time2); 
} 

Can be seen in action here

Sadece fazla koşul

1

. Bunu yapmanın daha basit bir yolu var. Bir "Eki 20 18:29:50 2001 GMT" gibi bir tarih dizesi var ve gün/ay biçiminde almak istiyorsanız

örnek ile,/yıl yapabileceğim:

$mystring = "Oct 20 18:29:50 2001 GMT"; 
printf("Original string: %s\n", $mystring); 
$newstring = strftime("%d/%m/%Y", strtotime($mystring)); 
printf("Data in format day/month/year is: %s\n", $newstring); 
İlgili konular