我想检查一下日期是今天,明天,昨天还是其他日期。但是我的代码不起作用。
码:
$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
}
在其他情况下,本准则始终适用。
第一。您在使用函数时出错,strtotime
请参见PHP文档
int strtotime ( string $time [, int $now = time() ] )
您需要修改代码以将整数时间戳传递给此函数。
第二。您使用的格式为dmY H:i,其中包含时间部分。如果只想比较日期,则必须删除时间部分,例如`$ date = date(“ dmY”);``
第三。我不知道这是否以同样的方式对你的作品,但我的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(); // This object represents current date/time
$today->setTime( 0, 0, 0 ); // reset time part, to prevent partial comparison
$match_date = DateTime::createFromFormat( "Y.m.d\\TH:i", $timestamp );
$match_date->setTime( 0, 0, 0 ); // reset time part, 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";
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句