|
本帖最后由 QAQ 于 2019-2-3 11:17 编辑
- <?php
- $全局变量 = array(
- "平年月数表" => array(31,28,31,30,31,30,31,31,30,31,30,31),
- "闰年月数表" => array(31,29,31,30,31,30,31,31,30,31,30,31),
- "平年月代码" => array(6,2,2,5,0,3,5,1,4,6,2,4),
- "闰年月代码" => array(5,1,2,5,0,3,5,1,4,6,2,4),
-
- );
- function 是否为闰年($年){
- return ($年 %4 == 0 && $年 %100 !=0 || $年 %400 ==0) ? 1 : 0;
- }
- function 取当前年天数($年){
- return 是否为闰年($年) ? 366 : 365;
- }
- function 取闰年数($年){
- return floor($年/4)-floor($年/100)+floor($年/400); //此处除法向下取整 不保留小数否则会出错
- }
- function 取年天数($年){
- return $年*365 + 取闰年数($年);
- }
- function 取某月天数($年,$月){
- global $全局变量;
- return $全局变量[(是否为闰年($年) ? "闰" : "平")."年月数表"][$月-1];
-
- }
- function 年月日是否有效($年,$月,$日){
- if($年 < 0 || $月 < 1 || $日< 1 || $月 >12) return 0;
- return $日 <= 取某月天数($年,$月) ? 1 : 0;
-
- }
- function 取元旦星期($年){ //星期1为1 星期2为2 ... 星期日为0
- return ((1+取年天数($年)-取当前年天数($年))%7);
- }
- function 取星期几($年,$月,$日){ //星期日为1 星期1为2 以此类推 (失败返回0)
- global $全局变量;
- if(!年月日是否有效($年,$月,$日)) return 0;
-
- $闰年 = 是否为闰年($年);
- $元旦星期 = 取元旦星期($年);
- $年代码 = $闰年 ? (($元旦星期+2)%7) : (($元旦星期+8)%7);
- $月代码 = $全局变量[($闰年 ? "闰" : "平")."年月代码"][$月-1];
- $星期 = ($年代码+$月代码+$日)%7;
- if($星期 == 0) $星期=7; //结果0则为星期6
- return $星期;
- }
- function 取文本星期($数字星期,$星期方式 = 0){ //参数1:取星期几() 返回的值 参数2: 0为星期几 1为周几 (默认为0)
- $星期文本 = $星期方式 ? "周" : "星期";
- switch($数字星期){
- case 1:return $星期文本."日";
- case 2:return $星期文本."一";
- case 3:return $星期文本."二";
- case 4:return $星期文本."三";
- case 5:return $星期文本."四";
- case 6:return $星期文本."五";
- case 7:return $星期文本."六";
- default:return "无效星期";
- }
- }
- echo 取文本星期(取星期几(2019,2,3))."<br>";
- echo 取文本星期(取星期几(2022,2,22))."<br>";
- echo 取文本星期(取星期几(2222,2,22))."<br>";
- echo 取文本星期(取星期几(9999,12,13))."<br>";
- echo 取文本星期(取星期几(10000,1,1))."<br>";
- echo 取文本星期(取星期几(0,1,1))."<br>";
- echo 取文本星期(取星期几(1,1,1))."<br>";
- echo 取文本星期(取星期几(2020,2,29))."<br>";
- ?>
复制代码 |
|