Dizelerin 'YYYY-AA-GG' kurallı biçiminde tarihler olarak doğrulandığı göz önüne alındığında, karşılaştırmayı yapmak için zaman damgasına dönüştürmeye gerek yoktur.
Bu test çalışacak:
( ( $date_from_user >= $start_date ) && ( $date_from_user <= $end_date ) )
verilen:
$start_date = '2009-06-17';
$end_date = '2009-09-05';
$date_from_user = '2009-08-28';
NOT: Bunun gibi dizeleri karşılaştırmak, "geçersiz" tarihlere izin verir, örneğin (32 Aralık) "2009-13-32" ve garip biçimlendirilmiş dizeler için "2009/3/3", bir dize karşılaştırması ile eşdeğer OLMAYACAKTIR tarih veya zaman damgası karşılaştırması. Bu, YALNIZCA dizelerdeki tarih değerleri TUTARLI ve KANONİK formattaysa çalışır.
Bariz olanı detaylandırarak buraya bir not eklemek için DÜZENLE .
By TUTARLI ay hep gün her zaman iki karakter olmalıdır, iki karakter olmalı ve ayırıcı karakteri her zaman bir çizgi olmalıdır: Ben dizenin aynı biçimde olmalıdır kıyaslanan o örneğin demek. Dört karakter yılı, iki karakter ayı, iki karakter günü olmayan "dizgileri" güvenilir bir şekilde karşılaştıramıyoruz. Örneğin dizelerde bir karakter ve iki karakter aylarının karışımı olsaydı, '2009-9-30'
ile karşılaştırdığımızda beklenmedik bir sonuç alırdık '2009-10-11'
. Biz insanca "9" u "10" '2009-9'
dan küçük görüyoruz, ancak bir dize karşılaştırması daha büyük olarak görecektir '2009-1'
. Tire ayırıcı karakterlere sahip olmamıza gerek yok; dizeleri de güvenilir bir şekilde karşılaştırabilirdik'YYYYMMDD'
biçim; bir ayırıcı karakter varsa, her zaman orada olmalı ve her zaman aynı olmalıdır.
By kanonik , ben tarih sırayla sıralanacaktır dizeleri neden olacağını bir format demek. Yani, dizge önce "yıl", ardından "ay", ardından "gün" temsiline sahip olacaktır. Dizgeleri 'MM-DD-YYYY'
formatta güvenilir bir şekilde karşılaştıramayız çünkü bu kurallara uygun değildir. Dize karşılaştırması soldan sağa çalıştığından, dizge karşılaştırması karşılaştırmadan önceki MM
(ayı) YYYY
(yıl) karşılaştırır.) 'YYYY-AA-GG' dizge biçiminin büyük bir yararı, standart olmasıdır; bu formatta gösterilen tarihler, dizeler olarak güvenilir bir şekilde karşılaştırılabilir.
[EKLE]
Php zaman damgası dönüşümü için giderseniz, sınırlamaların farkında olun.
Bazı platformlarda php, 1970-01-01'den önceki ve / veya 2038-01-19'dan sonraki zaman damgası değerlerini desteklemez. (Unix zaman damgası 32-bit tamsayısının doğası budur.) Daha sonraki sürümler pf php (5.3?) 'Ün bunu ele alması beklenir.
Dizeden zaman damgasına ve zaman damgasından dizeye dönüştürme yaparken aynı saat dilimini kullanmaya dikkat etmezseniz saat dilimi de bir sorun olabilir.
HTH