根据PHP中的日期隐藏链接

时间:2017-01-05 11:03:26

标签: php date if-statement

我使用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>');?>

2 个答案:

答案 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