我使用以下代码尝试将当前日期与 mySql 数据库中的日期条目进行比较。这是我在网上找到的代码,并进行了改编,因为我发现的所有示例都对日期进行了硬编码以将当前日期进行比较。问题是,即使是未来的日期也被标记为过期,我不明白为什么会这样。恐怕我还是PHP的新手,所以我可能会犯一个小学生的错误!
$exp_date = KT_formatDate($row_issue_whatson1['dateToShow']);
$todays_date = date("d-m-Y");
$today = strtotime($todays_date);
$expiration_date = strtotime($exp_date);
if ($expiration_date > $today) { echo "Not expired"; } else { echo "expired"; }
任何帮助将不胜感激。
我应该补充一点,数据库条目中使用的日期时间格式是 dd/mm/yyyy
与其创建一个字符串然后将其转换为时间戳,只需使用 mktime:
<?php
$today = mktime(
0, // hour
0, // minute
0 // seconds
);
?>
其余值将根据今天的日期填充。如果这仍然有问题,请为 $exp_date
和 $expiration_date
的值添加一些回显。
编辑
由于这解决了问题,您看到的差异是因为您对 date('d-m-Y')做了相反的事情。您询问的是当前日期,然后用当前时间填充时间值。数据库中的到期日期可能设置为午夜。两个日期相同,现在说上午 11 点,您正在比较失败if (00:00:00 > 11:00:00)
。
$exp_date = 14/05/2011 // todays date, int
$server_date = server.date() // servers date, int
// check exp_date against server date
if ( $server > $exp_date)
{ echo "Sorry your 'service' has expired"; }
else
{ echo "Welcome 'members_name' to StackOverflow"; }
试试看。但是,您需要正确的日期格式,因为 server.date() 在 PHP 中可能有所不同。
如果问题仍然存在,我会检查您的日期是字符串还是整数或两者兼而有之。这可能是问题所在。
希望有帮助。
DL。
您的函数似乎无效。
function KT_formatDate( $exp_date){
$exp_date = strtotime($exp_date);
$now = time();
if ($now > $exp_date)
return 'expired';
else
return ' Not expired';
}
$response = KT_formatDate($row_issue_whatson1['dateToShow']);