我想检查日期是今天、明天、昨天还是其他。 但是我的代码不起作用。
代码:
$timestamp = "2014.09.02T13:34";
$date = date("d.m.Y H:i");
$match_date = date('d.m.Y H:i', strtotime($timestamp));
if($date == $match_date) {
//Today
} elseif(strtotime("-1 day", $date) == $match_date) {
//Yesterday
} elseif(strtotime("+1 day", $date) == $match_date) {
//Tomorrow
} else {
//Sometime
}
代码总是在 else 的情况下。
最佳答案
首先。你在使用strtotime
函数时出错,见PHP documentation
int strtotime ( string $time [, int $now = time() ] )
您需要修改代码以将整数时间戳传递给此函数。
Second.您使用包含时间部分的格式d.m.Y H:i。如果您只想比较日期,则必须删除时间部分,例如`$date = date("d.m.Y");``
第三个。我不确定它是否对你有用,但我的 PHP 不理解 $timestamp
中的日期格式并返回 01.01.1970 02:00 进入 $match_date
$timestamp = "2014.09.02T13:34";
date('d.m.Y H:i', strtotime($timestamp)) === "01.01.1970 02:00";
您需要检查 strtotime($timestamp)
是否返回正确的日期字符串。如果不是,您需要指定 $timestamp
变量中使用的格式。您可以使用 date_parse_from_format
中的一种功能来执行此操作。或 DateTime::createFromFormat
这是一个工作示例:
$timestamp = "2014.09.02T13:34";
$today = new DateTime("today"); // This object represents current date/time with time set to midnight
$match_date = DateTime::createFromFormat( "Y.m.d\\TH:i", $timestamp );
$match_date->setTime( 0, 0, 0 ); // set time part to midnight, in order to prevent partial comparison
$diff = $today->diff( $match_date );
$diffDays = (integer)$diff->format( "%R%a" ); // Extract days count in interval
switch( $diffDays ) {
case 0:
echo "//Today";
break;
case -1:
echo "//Yesterday";
break;
case +1:
echo "//Tomorrow";
break;
default:
echo "//Sometime";
}
关于PHP:如何检查日期是今天、昨天还是明天,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25622370/