如何从PHP date_sun_info函数提取日出日落时间及单行字段值
从
date_sun_info提取日出日落及独立时间值方法 date_sun_info执行后返回的是带固定键名的关联数组,不需要靠循环逐行输出才能拿值,直接按键名索引就能取到对应独立数值。
常用返回键名说明
和日出日落直接相关的固定键名对应含义如下,所有键对应的值都是Unix时间戳:
sunrise:标准日出时间sunset:标准日落时间transit:太阳过中天(当日正午)时间civil_twilight_begin:民用晨光开始(天刚亮)时间civil_twilight_end:民用暮光结束(天全黑)时间- 其余还有航海晨昏、天文晨昏相关的键名,按需取用即可。
提取示例代码
直接按键名取值即可,不需要遍历整个数组:
<?php // 替换为你实际业务使用的经纬度 $lat = 31.2304; // 示例:上海纬度 $lon = 121.4737; // 示例:上海经度 $dateTimestamp = strtotime(date('Y-m-d')); $sun_info = date_sun_info($dateTimestamp, $lat, $lon); // 提取独立值并格式化 $sunrise = date("H:i:s", $sun_info['sunrise']); $sunset = date("H:i:s", $sun_info['sunset']); $sunTransit = date("H:i:s", $sun_info['transit']); // 直接输出单个值 echo "当日日出时间:{$sunrise}<br/>"; echo "当日日落时间:{$sunset}<br/>"; echo "当日正午时间:{$sunTransit}<br/>"; // 如果需要批量把所有键值转为独立格式化变量,可以在循环里用可变变量实现 foreach ($sun_info as $key => $val) { ${$key} = date("H:i:s", $val); } // 后续直接调用$sunrise、$sunset等变量即可,和手动赋值效果一致 ?>
注意事项:高纬度地区出现极昼/极夜现象时,对应日出/日落时间戳会返回特殊值(0或1),业务使用时需要加判断过滤这类边界情况。如果不需要格式化时间,直接取
$sun_info['键名']就能拿到原始时间戳做后续计算。
内容的提问来源于stack exchange,提问作者www.niesamowitepomorze.pl
相关产品推荐
相关产品推荐

