Bir tarih bugün veya daha önce olup olmadığını nasıl halledebiliriz?

2 Cevap php

Benim web uygulaması kitaplar nedeniyle tarihleri ​​var kitaplık türü sisteminden oluşmaktadır.

Ben sadece bu kullanarak, benim sayfada görüntülenen geçerli tarih var:

date_default_timezone_set('Europe/London');

$date = date;
print $date("d/m/Y");

Benim kütüphane kitap sayfasında, bkz üzereyiz IF deyimi kullanmak zaman bir fark yaparsa ben emin değilim, çünkü ben bir değişken olarak 'tarih' belirledik.

On this page, I am simply outputting the due dates of the books, many have dates which have not yet reached todays date, and others which have dates greater than todays date. Basically, all I want is the due date to appear bold (or strong), if it has passed todays date (the system displayed date). This is what I have and thought would work:

<?
if ($duedate < $date) {
  echo '<td><strong>';
} else {
  echo '<td>';
} ?>

<?php echo $date('d/m/Y', $timestamp);?></strong></td>

Ben bir İngiliz versiyonu varsayılan MySQL biçimi tarihini dönüştüren bir var olarak $ damgası ilan etti. Herkes bana yardımcı olabilir misiniz? Ben bu çok yalındır oldum düşündüm!

2 Cevap

deneyin:

if (strtotime($duedate) < time()) {
    // oooh, your book is late!
}

Bunun yerine biçimlendirilmiş tarihleri ​​ile çalışma, kendi damgaları ile çalışır. strtotime() ile onları geri dönüştürmek veya time() yerine tarih de kullanabilirsiniz. Onlar sadece ne çünkü damgaları, normal sayılar gibi karşılaştırılabilir.


Tamam :) buradan başlayalım:

$date = date; // Wrong!
print $date("d/m/Y");

PHP date sabit olduğunu düşünüyor, çünkü yukarıda çalışır. Eğer set vermedi ama beri bu sabit PHP dizge 'tarihi' dönüştürecektir. Bu yüzden $date ihtiva 'date'. Ardından, $date() çağırırken bir fonksiyonu olarak, PHP değerlendirir 'date' ve kullanır $date 'nın içeriği, bu işlev adı olarak, örneğin date(). Ne gerçekten yapmak istedim $date = date('d/m/y') sadece oldu.

İşte tarih nasıl işliyor:

string date  (  string $format  [,  int $timestamp  ] )

İlk argüman ikinci argüman çıktı oluşturulur hangi için isteğe bağlı bir zaman damgası, istenen çıkış biçimidir. Atlanirsa şimdi olacaktır. Işlevi dizge olarak çıkış verir.

Ben örneğin, senin $ duedates zaten dizeleri biçimlendirilir varsayalım 2010-04-06. Yani her iki değişken damgalarını biçimlendirilmiş dizeleri tutmak değil, çünkü $duedate < $date, gerçekten, bir dize karşılaştırma yapıyoruz ne zaman.

Öte yandan zaman damgaları sadece sayılardır. Bir zaman damgası Unix Epoch beri saniye sayısıyla ölçülür şimdiki zaman (1 Ocak 1970 00:00:00 GMT) 'dir. Sen fonksiyonu time() and you can convert strings that represent dates with strtotime() ile güncel tarih ve zaman damgası alabilirsiniz. Eğer tarihlerini karşılaştırmak istediğinizde Yani, yapılacak

if ( strtotime($duedate) < time() ) { // ... do something

Ve hepsi bu kadar var gerçekten.