【开源】摸鱼办提醒_PHP版

wpbkj
2022-07-07 / 686 阅读
温馨提示:
本文最后更新于2023年07月27日,已超过366天没有更新,若内容或图片失效,请发送邮件至admin@wpbkj.com。

简述

摸鱼办是一个具有娱乐调侃性质的虚拟机构。摸鱼办提醒则提醒各位摸鱼人各个假期何时到来,为摸鱼人种下希望(狗头)。项目整体由PHP构建。
项目基于GPL2.0开源协议发布

最终效果

摸鱼办

在线预览

摸鱼办

开源仓库

GITEE

实现

农历支持(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>

再添加亿点小细节,详细内容见开源仓库

9
知识共享许可协议
MySSL 安全签章
TrustAsia 安全签章