php - 在 PHP 中将星期名称与星期几匹配
问题描述
我正在尝试使用 HTML、CSS 和 PHP 制作日历。到目前为止,进展顺利。但最后,我发现我忘记了几个月并不总是从星期一开始。
我该怎么做?我在 PHP 方面不是那么强,并且无法真正弄清楚我将如何做到这一点。
例如本月(12 月),我需要在前面添加 5 个“隐藏或禁用”天,以匹配12 月 1 日是星期六。
<!-- Week Days -->
<ul class="weekdays">
<li>Monday</li>
<li>Tuesday</li>
<li>Wednesday</li>
<li>Thursday</li>
<li>Friday</li>
<li>Saturday</li>
<li>Sunday</li>
</ul>
<!-- Days -->
<ul class="days">
<?php
// Make List
$list = array();
$month = date('m', strtotime('-1 month'));
$year = date('Y', strtotime('-1 year'));
for($d = 1; $d <= 31; $d++){
$time = mktime(12, 0, 0, $month, $d, $year);
if(date('m', $time) == $month)
$list[] = date('d', $time);
}
if(is_array($list) || is_object($list)){
foreach($list as $day){
if($day < date('d')){
echo '<li class="passed"><span>' . $day . '</span></li>';
}else if($day == date('d')){
echo '<li class="current"><span>' . $day . '</span></li>';
}else{
echo '<li><span>' . $day . '</span></li>';
}
}
}
?>
</ul>
解决方案
因此,根据您的示例,您实际上是在输出 2017 年 11 月的信息,该信息从周三开始。
为了实现您正在寻找的内容,您只需要找出星期几,然后$list
如果您需要填充月份,则将其他“空”项目添加到您的数组中。
要找出星期几,请使用:
... // Your existing code under Make List
$year = date('Y', strtotime('-1 year'));
$date = '01-' . $month . '-' . $year;
$dayofweek = date('w', strtotime($date));
现在$dayofweek
将包含一周的数字,0 代表星期日,1 代表星期一,依此类推。
接下来,只需将空项目添加到列表数组中以填充应为空的天数:
if ($dayofweek == 0) $dayofweek = 7;
for (; $dayofweek > 1; $dayofweek--)
$list[] = '';
请注意,开始日是星期日,我将其更改为 7 以填充 6 个框。
最后,当您输出列表项时,只需<li>
为每个填充天添加一个空天:
... // Your existing code
foreach($list as $day){
if ($day == '')
echo '<li>Empty day</li>';
else if($day < date('d')){
... // Your existing code continues
推荐阅读
- java - 使用 split() 从文件中获取段落数组。"\n" 只按行而不是段落间隔
- windows - 我需要 Windows 中 REACT 的帮助
- reactjs - React 继承与组合模式
- css - 如何显示不同大小的元素
- python - 当我在书评应用程序上提交评论时无法调整类型“RowProxy”错误
- java - IntelliJ IDEA Edu - 使用 Gradle 编译 Java 以减慢 Win 10
- python - Numpy ndArray:访问每个类的输入特征
- json - 根据 JSON 中的枚举显示 tableview 部分中的行数
- javascript - 如何访问 html 表单中的输入表单结果?
- gremlin - Gremlin:带有顶点组的 dedup() 不起作用