Eğer mm-dd-YYYY
biçiminde bir PHP dizgem varsa (örneğin, 10-16-2003), bunu bir Tarih
e ve ardından YYY-mm-dd
biçiminde bir TarihZaman
a nasıl dönüştürebilirim? Hem Date
hem de DateTime
istememin tek nedeni, birine bir noktada, diğerine ise farklı bir noktada ihtiyacım olmasıdır.
İlk tarihinizde strtotime()
kullanın ve ardından geri dönüştürmek için date('Y-m-d')
kullanın:
$time = strtotime('10/16/2003');
$newformat = date('Y-m-d',$time);
echo $newformat;
// 2003-10-16
strtotime()][1] işlevinde ileri eğik çizgi
/ile kısa çizgi
-` kullanımı arasında fark olduğuna dikkat edin. Php.net'ten alıntı yapmak gerekirse:
m/d/y veya d-m-y formatlarında tarihler 'ye bakılarak belirsizlikler giderilir. çeşitli ürünler arasında ayırıcı bileşenler: eğer ayırıcı bir eğik çizgi (/), o zaman Amerikan m/d/y varsayılır; oysa ayırıcı bir tire (-) veya nokta (.), ardından Avrupa d-m-y formatı varsayılmaktadır.
m/d/Y ve m-d-Y formatlarında dikkatli olmanız gerekir. PHP /' ifadesini m/d/Y ve
-' ifadesini d-m-Y olarak kabul eder. Bu durumda girdi biçimini açıkça tanımlardım:
$ymd = DateTime::createFromFormat('m-d-Y', '10-16-2003')->format('Y-m-d');
Bu şekilde belirli bir yorumun kaprislerine maruz kalmazsınız.
$d = new DateTime('10-16-2003');
$timestamp = $d->getTimestamp(); // Unix timestamp
$formatted_date = $d->format('Y-m-d'); // 2003-10-16
Düzenleme: DateTime() yapıcısına bir DateTimeZone da geçirerek tarihin sunucu varsayılanı için değil, istenen zaman dilimi için oluşturulmasını sağlayabilirsiniz.