Php ile farkı Tarihler

4 Cevap php

Merhaba herkes aşağıdaki bana yardımcı olabilir merak ediyordum adamlar:

Ben iki farklı alanlar> StartDate bitiştarihi girilen iki tarih var.

Girildiği gibi bir uyarı olmadığını göstermek istiyorum:

  • ikincisi birincisinden önce bir tarihtir. Bu yüzden yanlış.
  • ve bu yılın diğer dönemlerinde ilki ve orada ikinci bir yılın belli döneminde en az 3 gün en az boşluk ve 7 gün arasında.

Ben bir PHP işlevi yazmak düşünüyordum ama ikinci tarih girilen gibi nasıl kısa sürede diyorlar?

Many many thank for you help Francesco

4 Cevap

gregoriantojd ile Julian day için tarih dönüştürmek.

/**
 * Get the Julian day of a date. The Julian day is the number of days since
 * January 1, 4713 BC.
 */
function datetojd($date)
{
    return gregoriantojd(idate('m', $date),
                         idate('d', $date),
                         idate('Y', $date));
}

// you can use strtotime to parse a lot of date formats, assuming they are text
$startDate = strtotime('22nd Nov 2009');
$finishDate = strtotime('26nd Nov 2009');

$diff = datetojd($finishDate) - datetojd($startDate);

if ($diff < 0) {
    // oops, $finishDate is before $startDate
}
else {
    // check $diff is at least 3 or 7 depending on the dates
}

Javascript ile istemci tarafında kontrol yapın.

Sonra formu (Javascript devre ile çalışan bu birkaç kullanıcılar için?) Teslim edildikten sonra mesaj sunabilirim aynı kontroller sunucu tarafında gerçekleştirin.

Eğer sayfayı yeniden ya da biraz karmaşık alabilir başka bir sayfada işlevi yoksa ben, ikinci tarih girilen en kısa sürede onu aramak eğer emin değilim

I tarihlerini kontrol ederim yolu size unix zaman verecektir php mktime işlevini kullanmaktır. Sonra ikinci bir birinci, ikinci tarih öncesi ve olmasıdır az ise, ikinci bir ilk + 3 * 24 * 60 * 60 (3 gün saniye) sonra 3 gün arayla olmadığı az ise

1 ° durum:

SELECT [whatever you need from the table] WHERE endDate < startDate

2 ° durum:

SELECT [whatever you need from the table] WHERE (endDate - startDate) >= IF([select that define in wich period of the year the data are],3, 7)

Bu hasta hile yapmak, ama muhtemelen sorun sql tarafı çözülecek olamaz.

, Daha iyi ne yapmak gerekir açıklayınız.

EDIT:

Js Tamam, bir başkası önerdi sonra da, ilk onay htem (kolaylık için değil, güvenle için: never rely only js doğrulama üzerine)

Karşılaştırma / işlemi için strtotime kullanın.

EDIT2 (last;) : Go with Alex's Answer