计算php两个日期之间相隔几个月零几天 几周 几个星期
上代码
<?php
function getMonthNum( $start_time, $end_time){
$date1 = explode('-',$start_time);
$date2 = explode('-',$end_time);
if($date1[0] == $date2[0]){ //同年
if($date1[1] == $date2[1]){ //同月
$month = 0;
$day = $date2[2]-$date1[2];
}else{
//不同月
$month = $date2[1]-$date1[1];
if($date1[2]>$date2[2]){
//开始天大于结束天:计算天数,月份减一
$day = date('t',strtotime($start_time))-($date1[2]-$date2[2]);
$month-=1;
}else{
//结束天大于开始天
$day = $date2[2]-$date1[2];
}
}
}else{
$month = 12;
//不同年
if($date1[1] == $date2[1]){ //同月
if($date1[2]>$date2[2]){
//开始天大于结束天:计算天数,月份减一
$day = date('t',strtotime($start_time))-($date1[2]-$date2[2]);
$month-=1;
}else{
//结束天大于开始天
$day = $date2[2]-$date1[2];
}
}else{
//不同月
if($date1[1]>$date2[1]){
//开始月大于结束月
$month -= $date1[1]-$date2[1];
if($date1[2]>$date2[2]){
//开始天大于结束天:计算天数,月份减一
$day = date('t',strtotime($start_time))-($date1[2]-$date2[2]);
$month-=1;
}else{
//结束天大于开始天
$day = $date2[2]-$date1[2];
}
}else{
//结束月大于开始月
$month += $date2[1]-$date1[1];
if($date1[2]>$date2[2]){
//开始天大于结束天:计算天数,月份减一
$day = date('t',strtotime($start_time))-($date1[2]-$date2[2]);
$month-=1;
}else{
//结束天大于开始天
$day = $date2[2]-$date1[2];
}
}
}
}
return [
'start_time'=>$start_time,
'end_time'=>$end_time,
'month'=>$month,
'day'=>$day,
];
}echo getMonthNum('2022-02-04','2023-03-05');$gm = getMonthNum('2022-01-11','2022-11-17');PHP获取月份日期差计算
$sd = '2022-01-11';指定日期加多少天,指定日期写在strtotime第二个参数里面,默认是当天
$ed = date("Y-m-d", strtotime("+281 day", strtotime($sd)));
$jkd = date("Y年m月d号", strtotime("+84 day", strtotime($sd)));$gm = getMonthNum('2022-01-11', date("Y-m-d"));
$gm = getMonthNum($sd, date("Y-m-d"));$gmy = getMonthNum(date("Y-m-d"), '2023-04-22');
$gmy = getMonthNum(date("Y-m-d"), "2023-01-23");
$gd = date_diff(date_create("2022-01-11"), date_create(date("Y-m-d")))->format('%a');
$gdy = date_diff(date_create(date("Y-m-d")), date_create("2023-01-23"))->format('%a') - 2;$gd = date_diff(date_create("2022-01-11"), date_create(date("Y-m-d")))->format('%a');$gdy = date_diff(date_create(date("Y-m-d")), date_create("2023-01-23"))->format('%a');$gw = floor(($gd - 1)/7) ;$gt = ($gd - 1) % 7;
$gw = floor($gd/7) ;
$gt = $gd % 7;
if($gt == 0){
if($gw > 0 & $gw > 0){
$gt = 7;
$gw = $gw - 1;
}
};
$gjd = round($gd / 280 * 100, 2);$gwy = floor(($gdy - 1)/7);$gt = (($gd - 1) % 7) + 1;$gty =( ($gdy-1)%7) + 1;echo $gd;$gd =echo date("Y-m-d");echo "<br>";echo date("Y-M-D");echo "<br>";echo $gm["month"];echo "<br>";echo $gm["day"];echo $gm[0];echo $gm[1];echo $gm[2];echo $gm[3];
?>
<?php
echo '<p> <p><h3 style="text-align:center">站长怀孕了<br>看见的人好运连连!</h3><p>';echo '今天是'.date("Y年m月d号").',这是第'; echo $weeks.'周第'.$wdays.'天;<br/>';echo '起算时间:2022年07月15号';
echo '起算时间:'.date("Y年m月d号", strtotime($sd));
echo '</br>';
echo '今天日期:'.date("Y年m月d号");
echo '</br>';echo '产检建卡日2022年10月7号, 已怀孕'.$days.'天;<br/>';echo '产检建卡:2022年10月07号<br/>';
echo '产检建卡:'.$jkd.'<br/>';echo '预产日期:'.$yuchandate;先用strtotime转化为日期对象再格式化
echo '预产日期:'.date("Y年m月d号", strtotime($ed));
echo '</br>';echo '距离预产期'.$daysleft.'天';
echo '距离预产期'.$gdy.'天';echo '约'.$yuchandate_floor_30.'个月';echo $yuchandate_floor_30_left.'天';
echo '约'.$gmy["month"].'个月'. $gmy["day"].'天';
echo '</br>';
echo '怀孕进度:'.$gjd."%";
echo '</br>';echo '<span style="font-weight:bold; font-size:0.9em;">已经怀孕'.$days.'天;</br>约'.$gm["month"].'个月加'. $gm["day"].'天;</br>第'.$weeks.'周第'.$wdays.'天;</span><br/>';
echo '<span style="font-weight:bold; font-size:0.9em;">已经怀孕'.$gd.'天;</br>约'.$gm["month"].'个月加'. $gm["day"].'天;</br>第'.$gw.'周+'.$gt.'天;</span><br/>';
echo '<span style="font-weight:bold; font-size:0.9em;">医院B超测试是第'.($gw-1).'周+'.$gt.'天;</span><br/>';echo "<span style="font-size: 0.7em;">周+</span><span style="font-size: 0.7em;">天</span>"
?>
<script type="text/javascript">
$(window).ready(function() {
var day_count = <?php echo '"'.$gw.'"+'; ?> "<coolangcount style='font-size: 0.7em;'>周+</coolangcount>" + <?php echo '"'.$gt.'"+'; ?> "<coolangcount style='font-size: 0.7em;'>天</count>";
$("#day_count").html(day_count);
})
</script>
</div>