我想从两个不同的日期获得月数。 我正在使用codeigniter php,我在很多地方看到我正在使用的代码应该可以工作,但是我收到了错误。
public function check($token){
if ($this->input->is_ajax_request()){
$id = $this->myajax->getUserByAuth($token);
if ($id){
$this->load->model('user_profile');
$result = $this->user_profile->check($id);
$this->load->model('riskrating');
//$this->riskrating->getRiskrateOfuser($id);
$riskCategory ='4';
$result['riskCategory'] = $riskCategory;
$date1 = new DateTime($result['insertdate']);
$date2 = new DateTime('now');
$diff = $date1->diff($date2);
$month = $diff->format('%m');
if ($month > 6){
return $result['month'] = 'invalid';
}else{
return $result['month'] = 'valid';
}
$this->output->set_content_type('application/json');
$this->output->set_output(json_encode($result));
} else {
$this->output->set_status_header('401', 'Could not identify the user!');
}
} else {
$this->output->set_status_header('400', 'Request not understood as an Ajax request!');
}
}
$date1
的值为“2016-08-19”。
是因为他们没有不同的月份?我想如果他们是同一个月它应该只返回零。
但是我从调试错误中看到的是这一行
$diff = $date1->diff($date2);
答案 0 :(得分:3)
试试这个
$date1 = '2016-01-25';
$date2 = '2016-06-20';
$time_stamp1 = strtotime($date1);
$time_stamp2 = strtotime($date2);
$year1 = date('Y', $time_stamp1);
$year2 = date('Y', $time_stamp2);
$month1 = date('m', $time_stamp1);
$month2 = date('m', $time_stamp2);
echo $diff = (($year2 - $year1) * 12) + ($month2 - $month1);
答案 1 :(得分:1)
您可以简单地使用datetime diff和format来计算差异。
$datetime1 = new DateTime('2009-10-11 12:12:00');
$datetime2 = new DateTime('2009-10-13 10:12:00');
$interval = $datetime1->diff($datetime2);
$month = $interval->format('%m');
答案 2 :(得分:1)
您应该使用DateTime
课程。
试试这个:
$date1 = new DateTime($result['insertdate']);
$date2 = new DateTime('now');
$diff = $date1->diff($date2);
$diff
现在应该是DateInterval
的实例。
答案 3 :(得分:1)
根据您的问题,如果您只想获得数月,那么只需两个月之间的差异。
$date1 = date('m',strtotime($var1->fieldname));
$date2 = date('m',strtotime($var2->fieldname));
$month_diff = $date1 - $date2;
此处,$var1
的值应大于$var2
。