Gg / aa / yyyy formatında 2 tarihleri ​​karşılaştırmak için kısa yol

6 Cevap

Herkes bu karşılaştırma yapmak için etkileyicisi yolu önerebilirsiniz? Ben gg / aa / yyyy biçiminde sağlanan bir tarih, örneğin 01/05/2009, sabit bir tarihte daha az olup olmadığını test etmek gerekir - Ben karşılaştırma yapmak sonra, strtotime kullanarak unix zaman formatında bu dönüştürebilirsiniz biliyorum, ama ben m bunu yapmak için daha hızlı bir yolu var olmadığını merak - çok teşekkürler, sadece benim kod geliştirmek için bir ipucu arıyor!

6 Cevap

Orada bilge kısa bir yol kodu değil muhtemelen, ve bunu bir darboğaz emin olmadıkça ben bu optimize rahatsız olmaz.

Ancak, sürece emin konum olarak her zaman daha sonra ay, birinci yıl koymak dize yeniden sıralamak mümkün olmalıdır ve (ay ve gün için ve 0'lar ile 2 basamak dahil) aynı biçimi olacaktır gün, ve sonra sadece dizeleri karşılaştırın.

Ancak, bu sadece kütüphaneleri unix zaman dönüştürmek icar ve daha sonra bu karşılaştırma daha hızlı olurdu emin değilim.

Eğer tarihler saklanan biçimini değiştirebilirsiniz varsa, gg yyyy / aa / olarak tanımlamak ve sonra sadece dizeleri karşılaştırmak olabilir.

Formun bir dize oluşturmak - Bir seçenek sadece biçimini tersine çevirmek için

yyyy/mm/dd

Bu bir sıralanabilir biçimi, bu yüzden sadece sıralı bir dize karşılaştırma yapabilirsiniz. Tabii ki, bu vb geçersiz verileri tespit anlamına gelir

Sonra bir karşılaştırma yapıyor Epoch'un onu dönüştürme çözüm almak için gidiyoruz gibi hızlı ve temiz olduğunu düşünüyorum.

Eğer kod geliştirmek istiyorsanız, ben size DateTime sınıfı kullanmayı öneririm. Bu php 5.2.0 tanıtıldı oldu (yani, hala tüm sunucularda desteklenmiyor olabilir)

php 5.3.0 'Eğer böyle bir şey yazabilirsiniz:

$d1 = DateTime::createFromFormat('d/m/Y', '02/03/2009');
$d2 = DateTime::createFromFormat('d/m/Y', '02/05/2009');
$interval = $d1->diff($d2);
echo $interval->format('%R%d days');

Peki, PHP tarih sınıfını kullanabilirsiniz, ama ben bunu geçerli çözüm daha iyi olurdu emin değilim ...

http://php.net/manual/en/book.datetime.php

Bu yöntemi kullanmak

yearmonthday

Eğer 01.05.2010 ve 03.07.2010 var

ve karşılaştırmak için: 20100501 <= veya => 20100703