Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 我如何计算日期是在今天还是在今天之前?_Php_Date - Fatal编程技术网

Php 我如何计算日期是在今天还是在今天之前?

Php 我如何计算日期是在今天还是在今天之前?,php,date,Php,Date,我的web应用程序由图书馆类型的系统组成,其中书籍有到期日期 我的页面上显示了当前日期,只需使用以下命令: date_default_timezone_set('Europe/London'); $date = date; print $date("d/m/Y"); 我将“date”设置为一个变量,因为我不确定在您将要看到的“我的图书馆图书”页面上的if语句中使用它是否会产生影响 在这一页上,我只是简单地输出这些书的到期日期,许多书的到期日期还没有达到今天的日期,还有一些书的到期日期大于今天

我的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格式的日期转换为英国版本。有人能帮我吗?我以为这会很直接

与其使用格式化日期,不如使用它们的时间戳。可以使用
strotime()
将它们转换回来,或者使用
time()
代替日期。时间戳可以像普通数字一样进行比较,因为它们就是这样


好的:)让我们从这里开始:

$date = date; // Wrong!
print $date("d/m/Y");
上述方法之所以有效,是因为PHP认为
date
是一个常量。但是由于您没有设置这个常量,PHP将把它转换为字符串“date”。所以
$date
包含
'date'
。然后,当作为函数调用
$date()
时,PHP计算
$date
的内容,即
'date'
,并将其用作函数名,例如
date()
。你真正想做的就是
$date=date('d/m/y')

以下是date的工作原理:

string date  (  string $format  [,  int $timestamp  ] )
第一个参数是所需的输出格式,第二个参数是为其生成输出的可选时间戳。如果省略,它将是现在。函数以字符串形式返回输出

我假设您的$duedate已经格式化为字符串,例如2010-04-06。因此,当您执行
$duedate<$date
时,实际上是在进行字符串比较,因为这两个变量都包含格式化字符串,但不包含时间戳

另一方面,时间戳只是数字。时间戳是自Unix纪元(1970年1月1日00:00:00 GMT)以来以秒为单位测量的当前时间。您可以使用函数获取当前日期和时间的时间戳,并且可以使用转换表示日期的字符串。所以当你想比较你的约会时,一定要

if ( strtotime($duedate) < time() ) { // ... do something
if(strotime($duedate)
这就是它的全部内容。

试试:

if (strtotime($duedate) < time()) {
    // oooh, your book is late!
}
if(strotime($duedate)
同样很抱歉,为了获得我的到期日,$timestamp设置为:$timestamp=STROTOTIME($duedate);因此这不起作用?以何种方式?如果
回送日期(“d/m/Y”,“$duedate”)会发生什么情况;
回送日期(“d/m/Y”,“$date”)呢
?在上面列出的设置中,我的所有到期日都显示为,因此其他状态没有生效…我想这与日期未被识别或未与当前日期进行比较有关…我想我已经看到了我的错误…是我将带$timestamp的日期转换为带STROTTIME的字符串吗?When我试过你的例子,第二个例子,我得到一个警告说:“警告:日期()预期参数2很长,字符串以“…您的第一个解决方案似乎有效,但没有任何日期被转换,我只是得到了1970年1月1日!但当我将大于符号更改为小于时,日期不会显示为,因此我想它会以某种方式识别日期?我得到了一个意外的结果”{'出于某种原因?在结尾处添加了另一个结束括号,看起来像这样的'time()){'…输出的信息很好,但仍然没有识别过期的书:(嘿,我成功地做到了这一点,我将$timestamp变量设置为(strotime($duedate),然后使用if($timestamp