Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/230.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从2张Unixtime邮票起的月份_Php_Date_Unix Timestamp - Fatal编程技术网

Php 从2张Unixtime邮票起的月份

Php 从2张Unixtime邮票起的月份,php,date,unix-timestamp,Php,Date,Unix Timestamp,我有两个日期的时间戳:2012年1月和2013年2月。这些时间戳之间的差异为31795200。我使用的功能是: function unixTimeStampInMonths($timestamp){ $elapsed_minutes = ($timestamp / 60); $elapsed_hours = ($elapsed_minutes / 60); $elapsed_days = ($elapsed_hours / 24); $elapsed_months

我有两个日期的时间戳:2012年1月和2013年2月。这些时间戳之间的差异为31795200。我使用的功能是:

function unixTimeStampInMonths($timestamp){
    $elapsed_minutes = ($timestamp / 60);
    $elapsed_hours = ($elapsed_minutes / 60);
    $elapsed_days = ($elapsed_hours / 24);
    $elapsed_months = floor($elapsed_days / 30);
    return $elapsed_months;
}
但是有一个问题,月份被四舍五入到30天。计算它们之间月差的最佳方法是什么

乐:

朋友建议的解决方案是:

// arguments format: 05/2010
function monthDifferenceBetween2Dates($first, $second){
    $expl1 = explode('/', $first);
    $expl2 = explode('/', $second);

    $months_in_years = ($expl2[1] - $expl1[1] - 1) * 12;
    $first_months = 12 - $expl1[0];
    $second_months = $expl2[0];

    return $months_in_years + $first_months + $second_months;
}
我要用这个。感谢@nickb

使用PHP类而不是UNIX时间戳:

$start = DateTime::createFromFormat( 'm/d/Y', '01/01/2012');
$end = DateTime::createFromFormat( 'm/d/Y', '02/01/2013');

$diff = $start->diff( $end);
var_dump( $diff);
将输出:

object(DateInterval)#3 (8) {
  ["y"]=>
  int(1)
  ["m"]=>
  int(1)
  ["d"]=>
  int(0)
  ["h"]=>
  int(0)
  ["i"]=>
  int(0)
  ["s"]=>
  int(0)
  ["invert"]=>
  int(0)
  ["days"]=>
  int(397)
}
因此,要计算总月数,我们可以:

$months = $diff->y * 12 + $diff->m;

它将打印13

我自己也有一个解决方案,但我无法发布。它不允许我这样做,在这个评论文本区域中发布的内容很糟糕: