PHP - 如何比较此条件语句中的日期/持续时间

时间:2016-12-30 17:27:44

标签: php

我有一些代码允许用户输入他们的“第一次考试”的日期,将该日期与今天的日期进行比较,如果这两个日期之间的差异是一定数量,则会显示警告/通知(与其他人一样)考试必须在第一次考试后的18个月内完成。我无法弄清楚如何比较条件陈述中日期之间的日期/差异 - 换句话说,我如何比较size_t index = x + y*WIDTH到“18个月”或“2个月”等等。如果有人可以指出我正确的方向,我会非常感激。

代码:

$difference

2 个答案:

答案 0 :(得分:2)

您可以使用$ difference对象的 days 属性:

if ($difference->days <=  (18 * 30) && $difference->days >= (6 * 30) {
    echo "Green warning: At least 6 months left.";
}

关于Php文档中的属性

  

如果DateInterval对象是由DateTime :: diff()创建的,那么这个   是开始日期和结束日期之间的总天数。   否则,天数将为假。

http://php.net/manual/en/class.dateinterval.php

编辑

如果你需要6个月和18个月,你可以使用这种方法:

$targetDate = new DateTime('20170529'); //here your target date;
$now = new DateTime(); //by default today;
$min = clone $targetDate;
$min->add(new DateInterval('P6M'));
$max = clone $targetDate;
$max->add(new DateInterval('P18M'));
if($now >= $min && $now <= $max){
// your code here
} 

答案 1 :(得分:1)

您可以使用date-diff(..)函数检索两个日期对象之间的月数

<?php
// Set first exam date
$firstexamdate = "2015-08-20";
// Work out date that is 18 months from first exam date
$nextDate = new DateTime($firstexamdate);
$nextDate->add(new DateInterval('P18M'));
// Calculate nr of months
$today = new DateTime();
$interval = date_diff($today, $nextDate);
$months = $interval->y * 12 + $interval->m;

// Output correct warning color
if ($months < 18 and $months>= 6) {
  echo "Green warning: At least 6 months left.";
} elseif ($months < 6 and $months>=1) {
  echo "Orange warning: Less than 5 months left.";
} elseif ($months < 1) {
  echo "Red warning: Less than one month left.";
}

?>