2 个 unix 时间戳起的月份

发布于 2024-12-29 17:02:00 字数 845 浏览 0 评论 0原文

我有来自 2 个日期的 2 个时间戳:01/2012 和 02/2013。这些时间戳之间的差异是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天。计算它们之间月份差异的最佳方法是什么?

LE:

朋友建议的解决方案是:

// 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

I have 2 timestamps from 2 dates: 01/2012 and 02/2013. The difference between these timestamps is 31795200. The function i've used is:

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;
}

But there is a problem, the months are rounded to 30 days. What's the best way of calculating the months difference between them?

LE:

The solution suggested by a friend is:

// 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;
}

i'm gonna use this. thanks @nickb

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

余生一个溪 2025-01-05 17:02:00

使用 PHP 的 DateTime 类代替 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. 演示

Use PHP's DateTime class instead of UNIX timestamps:

$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);

Will output:

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)
}

So, to calculate total months, we can do:

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

Which will print 13. Demo

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文