PHP   发布时间:2022-04-04  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了日历POV PHP中的日期准确性大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

此处的此函数基本上获取开始和结束日期,并循环浏览这些日期之间的所有每月日期.我面临的问题是准确性,如果用户给定日期为2018-01-30(Y-m-d格式),它将跳过Feb而给出一个不需要的日期2018-03-02(Y-m-d格式).相反,我希望将日期设置为2018-02-28.另外,对于2017年1月31日之类的日期,如果没有31个日期,则应将日期设置为该月的30号.

谢谢 !

@H_419_6@ /** * @param $startDate * @param $endDate * @return array */ public function calculateDaysOfMonth($startDate, $endDatE){ $begin = new \datetiR_390_11845@e($startDatE); $end = new \datetiR_390_11845@e($endDatE); //For including last date in DatePeriod $end = $end->modify('+1 day'); $days = array(); $interval = new \DateInterval('P1M'); $dateRange = new \DatePeriod($begin , $interval, $end); foreach ($dateRange as $datE) { $days[] = $date; } return $days; }

解决方法:

大家好,我解决了这个问题,现在我为需要日历POV保持一致性的情况提供解决方案.

@H_419_6@<?PHP /** * @param $startDate * @param $endDate * @return array */ function calculateDaysOfMonth($startDate, $endDatE){ $begin = new datetiR_390_11845@e($startDatE); $end = new datetiR_390_11845@e($endDatE); $days = array(); //Special case of February if($begin->format('d')== 29){ $end = $end->modify('+1 month'); $interval = new DateInterval('P1M'); $dateRange = new DatePeriod($begin, $interval, $end); foreach($dateRange as $datE){ if($date->format('m')<02){ $days[] = $date; } elseif($date->format('m')==3){ $days[] = $date->modify('-1 day'); } elseif($date->format('m')%2==0){ $days[] = $date->modify('-3 day'); } elseif ($date->format('m')%2!=0 && $date->format('m')>3){ $days[] = $date->modify('-2 day'); } } //var_dump($days);die(); return $days; } //Months that dont have dates 30 and 31 else if($begin->format('d')==30 || $begin->format('d')==31){ $time1 = strtotime($begin->format('Y-m-d')); $time2 = strtotime($end->format('Y-m-d')); $my = date('mY', $time2); $months = array(date('Y-m-t', $time1)); $f = ''; while($time1 < $time2) { $time1 = strtotime((date('Y-m-d', $time1).' +15days')); if(date('F', $time1) != $f) { $f = date('F', $time1); if(date('mY', $time1) != $my && ($time1 < $time2)) $months[] = date('Y-m-t', $time1); } } $months[] = date('Y-m-d', $time2); return $months; } } $a = calculateDaysOfMonth('2018-01-29', '2018-06-30'); foreach($a as $b){ var_dump($b); }

输出是这个

@H_419_6@object(datetiR_390_11845@E)#6 (3) { ["date"]=> String(26) "2018-01-29 00:00:00.000000" ["timezone_type"]=> int(3) ["timezone"]=> String(10) "US/Pacific" } object(datetiR_390_11845@E)#7 (3) { ["date"]=> String(26) "2018-02-28 00:00:00.000000" ["timezone_type"]=> int(3) ["timezone"]=> String(10) "US/Pacific" } object(datetiR_390_11845@E)#8 (3) { ["date"]=> String(26) "2018-03-29 00:00:00.000000" ["timezone_type"]=> int(3) ["timezone"]=> String(10) "US/Pacific" } object(datetiR_390_11845@E)#9 (3) { ["date"]=> String(26) "2018-04-29 00:00:00.000000" ["timezone_type"]=> int(3) ["timezone"]=> String(10) "US/Pacific" } object(datetiR_390_11845@E)#10 (3) { ["date"]=> String(26) "2018-05-29 00:00:00.000000" ["timezone_type"]=> int(3) ["timezone"]=> String(10) "US/Pacific" } object(datetiR_390_11845@E)#11 (3) { ["date"]=> String(26) "2018-06-29 00:00:00.000000" ["timezone_type"]=> int(3) ["timezone"]=> String(10) "US/Pacific" }

大佬总结

以上是大佬教程为你收集整理的日历POV PHP中的日期准确性全部内容,希望文章能够帮你解决日历POV PHP中的日期准确性所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: