PHP日历IF日期与日期
问题描述:
在这个日历在PHP中,我试图根据一周中的月份和日期更改CSS。我需要做一个函数来分隔已经过去的日子和星期六和星期天,并设置类“cal_dayblock”和其余日子还没有通过,下一个月他们在课堂cal_dayPHP日历IF日期与日期
已经尝试几件事情和我没有收到,请帮我在这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);
得到错误becouse,可以帮助我解决它?请
答
我需要的功能分离已经过去了,天周六和周日,并设置类“cal_dayblock”
第一部分
日是过去 - 只需使用$date < date('d-m-Y')
第二部分
日是星期六/星期日:您可以使用D
或l
(小写的L),以获得无论是星期一或星期一等获得一天的名字
您将需要在格式创建的日期得到这个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);
}
Docs:
太好了!但如果我的月和年变量从javascript date()发布到php ..我编辑了代码 – Frank021
用'$ showyear'和'$ showmonth'替换'$ current_year'和'$ current_month' - 假设你的AJAX工作正常。 –
非常感谢 – Frank021