繁体   English   中英

带有日期的PHP日历IF语句

[英]PHP Calendar IF statement with dates

在php中的此日历中,我试图根据星期和星期几更改css。 我需要创建一个函数来分隔已过的日子以及周六和周日,并设置类“ cal_dayblock”和尚未通过的其余日子以及下个月它们在class cal_day中

已经尝试了几件事,但是我没有得到,请在此IF语句中帮助我

<?php
$months = date("m");
$years = date("Y");
$day_count = cal_days_in_month(CAL_GREGORIAN, $months, $years);


for($i=1; $i<= $day_count; $i++) {


$date = $months.'/'.$i.'/'.$years;

if($i >= date('d') && $months >= date('m')) {
    echo '<div class="cal_day">';
    echo '<div class="day_heading">' . $i . '</div>';}

else {
    echo '<div class="cal_dayblock">';
    echo '<div class="day_heading">' . $i . '</div>';

}

echo '</div>';

}

?>

编辑:

  <script language="javascript" type="text/javascript">
   function initialCalendar() {
var hr = new XMLHttpRequest();
var url = "calendar_start.php";
var currentTime = new Date();
var month = currentTime.getMonth() + 1;
var year = currentTime.getFullYear();
showmonth = month;
showyear = year;
var vars = "showmonth="+showmonth+"showyear="+showyear;
hr.open("POST", url, true);
hr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
hr.onreadystatechange = function() {
    if(hr.readyState == 4 && hr.status == 200) {
        var return_data = hr.responseText;
        document.getElementById("showCalendar").innerHTML = return_data;
    }
 }
    hr.send(vars);
    document.getElementById("showCalendar").innerHTML = "Carregando...";
    }

和PHP

     $showmonth = $_POST['showmonth'];
     $showyear = $_POST['showyear'];
     $showmonth = preg_replace('#[^0-9/]#i', '', $showmonth);
     $showyear = preg_replace('#[^0-9/]#i', '', $showyear);

因为出现错误,可以帮助我解决它?

我需要创建一个函数来分隔已过的日子以及星期六和星期日,并设置类“ cal_dayblock”

第一部分

日期已过去-只需使用$date < date('dm-Y')

第二部分

Day是周六/周日:您可以使用Dl (小写L)来获取日期名称,以获取Mon或Monday等。

您将需要通过以dd-mm-YYYY格式创建日期来获取此信息,因为strtotime()不喜欢mm/dd/YYYY格式。

满足这两个条件后,您可以尝试以下操作:

$day_count = date('t'); // get days in current month

$current_year = date('Y');
$current_month = date('m');

for($i = 1; $i <= $day_count; $i++) {
    $date_dmy = date('d-m-Y', strtotime($i . '-' . $current_month . '-' . $current_year));
    // get the day name using dd-mm-YYYY format for strtotime
    $day_name = date('D', strtotime($date_dmy));

    echo '<div class="cal_day';
    // do your separate logic here - if it's in the past or it's a Saturday or Sunday
    if($date_dmy < date('d-m-Y') || in_array($day_name, array('Sat', 'Sun')))
        echo 'block';

    // close the rest of your HTML
    echo '"><div class="day_heading">' . $i . '</div></div>';
}

编辑:我将在这里使用dd-mm-YYYY格式进行比较 ,因为即使将m/d/Y格式的日期与标准运算符进行比较也行不通。

如果要以该格式输出日期,请执行以下操作:

echo date('m/d/Y', strtotime($date_dmy));

编辑2:要整理更多代码,可以执行以下操作:

for($i = 1; $i <= $day_count; $i++) {
    $class_name = 'cal_day';

    $date_dmy = date('d-m-Y', strtotime($i . '-' . $current_month . '-' . $current_year));
    $day_name = date('D', strtotime($date_dmy));
    if($date_dmy < date('d-m-Y') || in_array($day_name, array('Sat', 'Sun')))
        $class_name .= 'block';

    $html = '<div class="%s"><div class="day_heading">%s</div></div>';
    echo sprintf($html, $class_name, $i);
}

文档:

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM