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