简述
摸鱼办是一个具有娱乐调侃性质的虚拟机构。摸鱼办提醒则提醒各位摸鱼人各个假期何时到来,为摸鱼人种下希望(狗头)。项目整体由PHP构建。
项目基于GPL2.0开源协议发布
最终效果
在线预览
开源仓库
实现
农历支持(lunar.php)
已将农历支持进行删减,仅保留农历转公历功能
将文本类型日期转换为时间戳方法
/** 将文本类型日期转换为时间戳方法 */
function changeDate($date){
list($year,$month,$day) = explode('-',$date);
return mktime(0,0,0,$month,$day,$year);
}
计算两日期间隔时间(Y-m-d格式)
需用到changeDate()函数
/** 计算两日期间隔时间(Y-m-d格式) */
function countDay($dateBegin,$dateEnd){
$res = (changeDate($dateEnd) - changeDate($dateBegin)) / (3600*24);
return $res;
}
判断今年该日期是否已过并计算与当前相差时间(农历)
需用到changeDate()及countDay()及农历支持
/** 判断今年该日期是否已过并计算与当前相差时间(农历) */
function lunarDayJudge($month,$day){
global $lunar;
global $nowDate;
global $nowYear;
global $nextYear;
$date = $lunar->convertLunarToSolar($nowYear,$month,$day);
$date = $date[0].'-'.$date[1].'-'.$date[2];
if(changeDate($nowDate) <= changeDate($date)){
return countDay($nowDate,$date);
}else{
$date = $lunar->convertLunarToSolar($nextYear,$month,$day);
$date = $date[0].'-'.$date[1].'-'.$date[2];
return countDay($nowDate,$date);
}
}
判断今年该日期是否已过并计算与当前相差时间(公历)
需用到changeDate()及countDay()及农历支持
/** 判断今年该日期是否已过并计算与当前相差时间(公历) */
function dayJudge($month,$day){
global $nowDate;
global $nowYear;
global $nextYear;
$date = $nowYear.'-'.$month.'-'.$day;
if(changeDate($nowDate) <= changeDate($date)){
return countDay($nowDate,$date);
}else{
$date = $nextYear.'-'.$month.'-'.$day;
return countDay($nowDate,$date);
}
}
具体实现
定义数组$vacDate储存各假期剩余天数
定义数组$title储存各假期名称
/** 周末 */
if(6-$nowWeek <= 0){
$vacDate['WEEKEND'] = 0;
}else{
$vacDate['WEEKEND'] = 6-$nowWeek;
}
$title['WEEKEND'] = '周末';
/** 中秋节 */
$vacDate['MAF'] = lunarDayJudge(8,15);
$title['MAF'] = '中秋节';
/** 国庆节 */
$vacDate['ND'] = dayJudge(10,1);
$title['ND'] = '国庆节';
/** 元旦 */
$vacDate['NYD'] = dayJudge(1,1);
$title['NYD'] = '元旦';
/** 农历过年 */
$vacDate['LNY'] = lunarDayJudge(1,1);
$title['LNY'] = '过年';
/** 清明节 */
$vacDate['TSD'] = lunarDayJudge(4,5);
$title['TSD'] = '清明节';
/** 劳动节 */
$vacDate['ILD'] = dayJudge(5,1);
$title['ILD'] = '劳动节';
/** 端午节 */
$vacDate['DBF'] = lunarDayJudge(5,5);
$title['DBF'] = '端午节';
其他就是html
在html中使用foreach循环取出两数组中数据
<p>
<?php
foreach ($vacDate as $key => $value){
?>
距离 <?php echo $title["{$key}"];?> 放假还有 <?php echo $value;?> 天<br>
<?php }?>
</p>
再添加亿点小细节,详细内容见开源仓库