我使用PHP显示了许多日期,我需要在特定日期到期时隐藏它们。
我正在使用IF语句来运行它,但它似乎并没有起作用。
任何建议都会很棒
<?PHP if('09-19-2016'<DATE('m-d-Y') || $_SESSION['role'] == 'Administrator') echo('<li><a href="?page=itRooms&weekId=2">Week 2 - W/C 12/09/2016</li></a>');?>
答案 0 :(得分:2)
当你在做什么
'09-19-2016' < date('m-d-Y')
你最终比较两个字符串,这些字符串不能被评估为“大于”或“小于”。您需要将其转换为时间戳或使用DateTime对象来执行此操作。此外,日期格式不正确。
<?php
$date_string = "09/19/2016";
// Using objects
$current_date = new DateTime();
$your_date = new DateTime($date_string);
if ($your_date < $current_date || $_SESSION['role'] == 'Administrator')
echo'<li><a href="?page=itRooms&weekId=2">Week 2 - W/C 12/09/2016</li></a>';
// Using timestamps
if (strtotime($date_string) < time() || $_SESSION['role'] == 'Administrator')
echo'<li><a href="?page=itRooms&weekId=2">Week 2 - W/C 12/09/2016</li></a>';
选择上述任一项 - 两者都可以,但我发现对象更容易使用。
根据您的评论,
如果日期已过,则隐藏日期
请注意,当使用小于运算符<
时,如果日期位于过去,则$date < $now
将评估为true,如果日期为,则隐藏内容在将来。如果您需要相反的行为,只需使用大于运算符<
。
这是一个现场演示:https://3v4l.org/N74G2
答案 1 :(得分:1)
您需要将日期从格式'09 -19-2016'解析为时间戳或DateTime对象,PHP可以将其作为日期进行比较。您可以使用PHP的date_parse_from_format()来执行此操作。
例如:
$date = '09-19-2017';
$parsed = date_parse_from_format('m-d-Y', $date);
$timestamp = mktime(
$parsed['hour'],
$parsed['minute'],
$parsed['second'],
$parsed['month'],
$parsed['day'],
$parsed['year']
);
if ($timestamp < time()) {
echo 'older';
} else {
echo 'newer';
}
在保持当前格式的同时,这将为您提供正确的答案。您可以在此处查看一个有效的示例:https://3v4l.org/NIoId