[英]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.