Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PHP中根据日期隐藏链接_Php_Date_If Statement - Fatal编程技术网

在PHP中根据日期隐藏链接

在PHP中根据日期隐藏链接,php,date,if-statement,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>'

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

当你在做

'09-19-2016' < date('m-d-Y')
'09-19-2016'<日期('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>';

您需要将日期从格式“09-19-2016”解析为时间戳或DateTime对象,PHP可以将其作为日期进行比较。您可以使用PHP来实现这一点

例如:

$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';
}
$date='09-19-2017';
$parsed=date_parse_from_格式('m-d-Y',$date);
$timestamp=mktime(
$parsed['hour'],
$parsed['minute'],
$parsed['second'],
$parsed['month'],
$parsed['day'],
$parsed['year']
);
如果($timestamp

这将在保持当前格式的同时为您提供正确答案。您可以在这里看到一个工作示例:

您能进一步解释吗?因此,我有一个从第1周到第50周的日期列表,我的目标是让if语句在日期已过且他们不是管理员时隐藏日期。目前,它显示的是所有的日期,不管-我知道如果语句的管理员部分正在工作,但日期部分并不完美,非常感谢-我将使用的对象,它的整洁得多!我知道这很简单很乐意帮忙!:-)如果您觉得这个答案最有用,请接受它:-)字符串可以比较,在这种情况下,它们只需要采用更有意义的格式。“2016-09-19”可以安全地与同一格式的另一个日期进行比较。@BobbyJack是的,你是对的,老实说,我不知道-我总是使用对象或时间戳,直到!