说明
纯属没事写着玩的,别上纲上线。判断日出日落都是按照北京时间来的,不会按照ip地址精确到省份。我是写代码的,不是气象台的!
实现
首先,想要自动开启/关闭夜间模式我们需要知道现在的太阳的状态(日出/日落),所以说先要获取今日的日出和日落时间。在网上找了一大圈也没找到可以对接的api,所以说只能靠自己来写了。 我这里的演示是从世界时间网来获取的,当然他没有api,所以说我的思路是利用curl函数来获取源码,然后正则表达式匹配出我们想要的东西。
代码语言:javascript复制<?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]);
好了,利用正则表达式我们已经将想要的日出和日落的时间都匹配出来了,接下来可以进行判断了。
代码语言:javascript复制//判断是否开启夜间模式
$time = time();
if($time<strtotime($sunup) || $time>strtotime($sundown)){
//开启夜间模式
}else{
//关闭夜间模式
}
原理也很简单,如果当前时间小于日出时间,或者当前时间大于日落时间就开启夜间模式,很好理解吧。具体代码自行实现吧,这里获取源码的时间我是用date函数拼接出来的,所以说想要获取下一天或者上一天的,只要改一下date函数就可以了。
后记
我也不知道为什么要写这个,真的就是写着玩的,没有那么多的功能,就只是获取北京时间的日出日落时间,我精确不到每个省,别杠了,我都服了。
如无特殊说明《php实现自动开启/关闭夜间模式》为博主MoLeft原创,转载请注明原文链接为:https://moleft.cn/post-49.html