MENU

php实现自动开启/关闭夜间模式

• March 9, 2020 • 教程

说明

纯属没事写着玩的,别上纲上线。判断日出日落都是按照北京时间来的,不会按照ip地址精确到省份。我是写代码的,不是气象台的!

实现

首先,想要自动开启/关闭夜间模式我们需要知道现在的太阳的状态(日出/日落),所以说先要获取今日的日出和日落时间。在网上找了一大圈也没找到可以对接的api,所以说只能靠自己来写了。
我这里的演示是从世界时间网来获取的,当然他没有api,所以说我的思路是利用curl函数来获取源码,然后正则表达式匹配出我们想要的东西。

<?php
//获取源代码
$result = get_curl('https://mtime.guowaitianqi.com/rcrl-5141-'.date('Ymd').'.html');
//获取日出时间
preg_match_all("/\<span class=\"bf11\"\>日出时间:(.*)\<\/span\>/",$result,$sunup);
$sunup = date('Y-m-d').' '.trim($sunup[1][0]);
//获取日落时间
preg_match_all("/\<span class=\"bf11\"\>日落时间:(.*)\<\/span\>/",$result,$sundown);
$sundown = date('Y-m-d').' '.trim($sundown[1][0]);

好了,利用正则表达式我们已经将想要的日出和日落的时间都匹配出来了,接下来可以进行判断了。

//判断是否开启夜间模式
$time = time();
if($time<strtotime($sunup) || $time>strtotime($sundown)){
    //开启夜间模式
}else{
    //关闭夜间模式
}

原理也很简单,如果当前时间小于日出时间,或者当前时间大于日落时间就开启夜间模式,很好理解吧。具体代码自行实现吧,这里获取源码的时间我是用date函数拼接出来的,所以说想要获取下一天或者上一天的,只要改一下date函数就可以了。

后记

我也不知道为什么要写这个,真的就是写着玩的,没有那么多的功能,就只是获取北京时间的日出日落时间,我精确不到每个省,别杠了,我都服了。

Last Modified: May 26, 2020
Archives 下载海报
QR Code for this page
Tipping QR Code