Temeller
Bir tarih biçimini diğerine dönüştürmenin basit yoluyla strtotime()
birlikte kullanmaktır date()
. strtotime()
tarihi bir Unix Zaman Damgasına dönüştürür . Bu Unix Zaman Damgası daha sonra date()
yeni biçime dönüştürmek için geçirilebilir .
$timestamp = strtotime('2008-07-01T22:35:17.02');
$new_date_format = date('Y-m-d H:i:s', $timestamp);
Veya tek astar olarak:
$new_date_format = date('Y-m-d H:i:s', strtotime('2008-07-01T22:35:17.02'));
strtotime()
Tarihin geçerli bir biçimde olmasını gerektirdiğini unutmayın . Geçerli bir biçim sağlanmaması strtotime()
, tarihin 1969-12-31 olmasına neden olacak şekilde yanlış döndürülmesine neden olur.
kullanma DateTime()
PHP 5.2'den itibaren, PHP DateTime()
bize tarihlerle (ve saatlerle) çalışmak için daha güçlü araçlar sunan sınıfı sundu . Yukarıdaki kodu şu şekilde kullanarak yeniden yazabiliriz DateTime()
:
$date = new DateTime('2008-07-01T22:35:17.02');
$new_date_format = $date->format('Y-m-d H:i:s');
Unix zaman damgalarıyla çalışma
date()
Unix zaman damgasını ikinci parametresi olarak alır ve sizin için biçimlendirilmiş bir tarih döndürür:
$new_date_format = date('Y-m-d H:i:s', '1234567890');
DateTime () @
, zaman damgasından önce bir ekleyerek Unix zaman damgalarıyla çalışır :
$date = new DateTime('@1234567890');
$new_date_format = $date->format('Y-m-d H:i:s');
Sahip olduğunuz zaman damgası milisaniyedir (bitebilir 000
ve / veya zaman damgası on üç karakter uzunluğundaysa), başka bir biçime dönüştürebilmeniz için saniyeye dönüştürmeniz gerekir. Bunu yapmanın iki yolu vardır:
- Kullanarak son üç basamağı kesin
substr()
Son üç basamağı kırpmak birkaç yolla elde edilebilir, ancak substr()
kullanımı en kolay olanıdır:
$timestamp = substr('1234567899000', -3);
Ayrıca zaman damgasını 1000'e bölerek saniyeye dönüştürebilirsiniz. Zaman damgası, 32 bit sistemlerde matematik yapmak için çok büyük olduğundan , matematik dizeler olarak yapmak için BCMath kitaplığını kullanmanız gerekir :
$timestamp = bcdiv('1234567899000', '1000');
Unix Zaman Damgası almak için bir Unix Zaman Damgası strtotime()
döndüren şunu kullanabilirsiniz :
$timestamp = strtotime('1973-04-18');
DateTime () ile şunları kullanabilirsiniz: DateTime::getTimestamp()
$date = new DateTime('2008-07-01T22:35:17.02');
$timestamp = $date->getTimestamp();
PHP 5.2 çalıştırıyorsanız U
bunun yerine biçimlendirme seçeneğini kullanabilirsiniz :
$date = new DateTime('2008-07-01T22:35:17.02');
$timestamp = $date->format('U');
Standart olmayan ve belirsiz tarih biçimleriyle çalışma
Ne yazık ki bir geliştiricinin birlikte çalışması gereken tüm tarihler standart biçimde değildir. Neyse ki PHP 5.3 bize bunun için bir çözüm sundu. DateTime::createFromFormat()
PHP'ye bir tarih dizesinin hangi formatta olduğunu söylememizi sağlar, böylece daha fazla manipülasyon için bir DateTime nesnesine başarıyla ayrıştırılabilir.
$date = DateTime::createFromFormat('F-d-Y h:i A', 'April-18-1973 9:48 AM');
$new_date_format = $date->format('Y-m-d H:i:s');
PHP 5.4'te, DateTime()
kodumuzu tek satırlı hale getirmemize izin veren örnekleme üzerinde sınıf üyesi erişimi yapma becerisi kazandık :
$new_date_format = (new DateTime('2008-07-01T22:35:17.02'))->format('Y-m-d H:i:s');
$new_date_format = DateTime::createFromFormat('F-d-Y h:i A', 'April-18-1973 9:48 AM')->format('Y-m-d H:i:s');