PHP tarih biçimini almak için işlev?

6 Cevap php

I date('Y/m/d H:i:s'); 2009/12/18 11:37:45 dönüşmesi, tarih biçimi dizeleri nasıl kullanacağımı biliyorum.

Ben tersini yapabilirim bir işlev istiyorum - o biçimini geri biçimlendirilmiş bir tarihe bak. PHP bir tane var mı?

Nedeni çeşitli biçimlerde bizim veritabanına kaydedilir damgaları var ve bizim eski tabloları her bir araç işleme yazma ve tarih girişlerini analiz ediyorum olduğunu.

EDIT: ben bunu yapmak için bir düz ileriye doğru bir yolu yoktur sanırım. Ben çağda beri saniye zaman, hangi verir () strftime kullanabilirsiniz düşünüyordum. Yani daha iyi bir soru ben mySQL veritabanında damgası alanlarda saniye o zaman kullanabilirsiniz nedir? Ben tablo bazen bir zaman damgası ve bir varchar olarak yapılandırılmış ise bu işe tahmin ediyorum.

6 Cevap

Hayır, böyle bir fonksiyonu yoktur. Tüm olası varyasyonları ifade düzenli ifade maçları bir dizi, örneğin, yazmak gerekir

$variations = array (
    '^([0-9]{4})/[0-9]{2}/[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{4}2$' => 'Y/m/d H:i:s',
    // more here
);

foreach ($dateFromDatabase as $date) {
    foreach ($variations as $regexp => $dateFormat) {
    	if (preg_match ('|' . $regexp . '|', $date)) {
    		$matches[$dateFromDatabase] = $dateFormat;
    		break;
    	}
    }
}

// $matches now consists of an array of dates => format

Evet, bu bir işlevi var biri yok: strtotime()

strtotime - Unix zaman damgası herhangi bir İngilizce metin datetime açıklaması hakkında Ayrıştırma

EDIT: Tamam, işlevi kullanılan biçimlendirmeyi geri olmayabilir, ama zaman damgası alacak ve daha sonra herhangi bir formatta saklamak mümkün olacaktır.

strptime() içine bir göz atın.

Belirli tarih biçimlerini identifiy için regexpi kullanabilirsiniz. % 100 kapsama sahip olana kadar sıradanifade listenize ekleyebilirsiniz.

if(preg_match('/^\d{4}\/\d{2}\/\d{2} \d{2}:\d{2}:\d{2}$/', $Date))
    $Format = 'Y/m/d H:i:s';

vs ..

Sen m / d / Y biçime tarihi almak için ihtiyacım yok. İstediğiniz herhangi başka bir tarih formatında herhangi geçerli bir tarih açmak için strtotime kullanabilirsiniz.

date( 'format', strtotime($date) );

Belki Unix gibi hepsini kurtarmak için onun daha iyi bir fikir o zaman kullanıcıların görmek istediğinize bağlı olarak çok kolay anında onları biçimlendirebilirsiniz damgaları.