簡體   English   中英

如果日期是在今天或之前,我該怎么辦?

[英]How can I work out if a date is on or before today?

我的Web應用程序由圖書館類型系統組成,其中書籍有截止日期。

我在頁面上顯示當前日期,只需使用以下命令:

date_default_timezone_set('Europe/London');

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

我已將'date'設置為變量,因為我不確定當我在我的圖書館書籍頁面上看到的IF語句中使用它時是否會有所不同。

在這個頁面上,我只是輸出書籍的截止日期,許多日期尚未達到今天的日期,而其他日期的日期大於今天的日期。 基本上,如果它已經過了今天的日期(系統顯示日期),我想要的是顯示為粗體(或強)的截止日期。 這就是我所擁有的並且認為會起作用的:

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

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

我已將$ timestamp聲明為var,它將默認MySQL格式的日期轉換為英國版本。 誰能幫我嗎? 我以為這會非常直接!

嘗試:

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

而不是使用格式化的日期,使用他們的時間戳。 使用strtotime()或使用time()而不是date來轉換它們。 時間戳可以像普通數字一樣進行比較,因為這就是它們的真實含義。


好的:)讓我們從這里開始:

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

以上只有作用,因為PHP認為date是一個常數。 但是因為你沒有設置這個常量PHP會將它轉換為字符串'date'。 所以$date包含'date' 然后,當調用$date()作為函數時,PHP會評估$date的內容,即'date'並將其用作函數名稱,例如date() 你真正想做的只是$date = date('d/m/y')

以下是日期的工作原理:

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

第一個參數是所需的輸出格式,第二個參數是可生成輸出的可選時間戳。 如果省略,現在就是。 該函數將輸出作為字符串返回。

我假設您的$ duedates已經格式化了字符串,例如2010-04-06。 因此,當你執行$duedate < $date ,你實際上是在進行字符串比較,因為兩個變量都保存格式化的字符串,但不包含時間戳。

另一方面,時間戳只是數字。 時間戳是以Unix紀元(1970年1月1日00:00:00 GMT)以來的秒數測量的當前時間。 您可以使用函數time()獲取當前日期和時間的時間戳,並且可以使用strtotime()轉換表示日期的字符串。 所以當你想比較你的日期時,做

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

這就是它的全部內容。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM