Iyi yöntem girdi ve PHP biçiminde özel datetime doğrulamak

1 Cevap php

Bu ön kullanılabilirlik ve PHP DATE_TIME doğrulama açısından bir çifte sorudur.

Ben o projeyi tamamladı tarih eklemek istiyorum bir müşteri için bir site üzerinde çalışıyorum (yani projelerin bu sırayla listelenmiş olabilir). O yönetici arabirimini kullanarak tek olacak, bu yüzden mümkün olduğunca basit olmak istiyorum.

Ben bir SQLite db DATE_TIME gibi tarihlerini depolamak.

Ben ikinci DATE_TIME için gün, saat, dakika, ekleme seçeneği ile, için require the client enter at least the year and month istiyorum. Bu set değilse bunlar küçük sayı varsayılan olacaktır.

Bunu yapmak için en iyi yoldur ve en kolay girişi (sol) alarak, tek bir giriş formu yapma ve sonucu (sağda) hale düşündüm. Making him use xxxx/xx/xx/xx/xx/xx as the format.

2009/08       = 2009-08-01 00:00:01
2009/08/01    = 2009-08-01 00:00:01
2009/08/01/05 = 2009-08-01 05:00:01

(adding one second as default otherwise it will be the day before)

Ben bir diziye girdi patlayan ve regex her tarih bölümü doğrulayarak ilk çalıştı. dağınık gerçek hızlı aldım ve uygun aralıkları, diyelim ki, / [1980-2009] / veya / [01-12] / (beklediğimden gibi bu işe yaramazsa) doğrulamak için nasıl anlamaya olamaz. Ayrıca / [(0-9) {2}] / Açıkçası ay için işe gitmiyor.

Başka bir seçenek, her bir tarih bölümü ayrı bir seçme alanı yapıyor. Ay isteğe bağlı sonra her alanı yapma. Ama bu html çıktı, ayrıca her ay 31 gün yok, ben seçilir hangi ay bağlı olarak günlük alanını değiştirmek için bazı javascript gerekir ki verilen dağınık alır. Bu çok fazla. Ayrıca tek bir alanı kullanmak çok daha kolay ve daha hızlı görünüyor.

Siz ne önerirsiniz iyi giriş yolu ve özel tarihsaat doğrulamak nedir?

1 Cevap

Dakika ve yıl: I, tarihte o ay / yıl, gün / ay / yıl, gün / ay / yıl saat dahil tarih biçimleri, çeşitli girebilirsiniz bu şekilde strtotime () çağırarak öneriyoruz -ay-gün saat: dakika

Strtotime tarih ne olduğunu belirlemek yapamıyorsanız, o (manuel kontrol, ya da -1 PHP'nin eski sürümleri) false döndürür. SO genel kodu olacaktır:

  1. Stripslashes yoluyla girişi (gerekirse) ve strtotime çalıştırın
  2. Değeri === false olup olmadığını kontrol edin. Eğer öyleyse, hata görüntülemek
  3. Yor veritabanı) date (kullanıyor beklediği gibi Aksi takdirde, zaman biçimlendirmek