大佬教程收集整理的这篇文章主要介绍了日历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,请注明来意。