【问题标题】:Find minimum and maximum date for what a person can be born for a certain age查找一个人在特定年龄可以出生的最小和最大日期
【发布时间】:2023-04-02 03:08:01
【问题描述】:

我正在使用内置碳约会的 Laravel。我想知道找出一个人可以出生到某个年龄的最小和最大日期的最佳方法是什么。例如,一个 33 岁的人可以出生在 x 和 y 之间。到目前为止,我猜最小值是这样的

$age = 33;   
$minimum =  Carbon::today()->subYears($age)->toDateString();

但是我如何找到最大值?我知道我需要 - 1 次加一天,但不知道怎么做?

【问题讨论】:

  • subYears($age-1)你有一个开始

标签: php laravel php-carbon


【解决方案1】:

如果您截至今天 (2018-02-22) 已 33 岁,则意味着要么

  • 今天是你的生日,你刚满 33 岁:你的生日是 1985-02-22
  • 今天是您 33 岁的最后一天,明天是您的 34th 生日。你的生日应该是1984-02-23

所以我们知道日期范围应该是从1984-02-231985-02-22,转换为:

// Today = 2018-02-22

// Maximum = Today - 33 years ago
//         = 2018-02-22 - 33 years
//         = 1985-02-22
$max = Carbon::today()->subYears($age)->toDateString();

// Minimum = Tomorrow - 34 years ago
//         = 2018-02-23 - 34 years
//         = 1984-02-23
$min = Carbon::tomorrow()->subYears($age + 1)->toDateString();

【讨论】:

  • 大声笑,刚刚发布了同样的东西,没有先看到你的答案。
【解决方案2】:

假设您的语法对于您的 $minimum 计算是正确的,您可以使用 Carbon 中的等效方法:

$maximum = Carbon::today()->subYears($age - 1)->addDay()->toDateString();

查看碳文档here 了解更多详情。

【讨论】:

    【解决方案3】:

    我假设你有这个问题:

    考虑到他/她今天的年龄,一个人可以拥有X 年的最小和最大日期是多少。

    让我们想象一下我的儿子是一年前出生的。他将是1 岁直到02/20/2019,然后他将变成2。所以他将从02/21/2018(如今天)到02/20/2019(如昨天)为1

    如果我没记错的话,你可以通过这个例子猜出这些限制:

    $age = 33;   
    $minimum =  Carbon::today()->subYears($age)->toDateString();
    $maximum = Carbon::yesterday()->subYears($age-1)->toDateString();
    

    试一试。


    Carbon 库中有更多方法。检查documentation

    【讨论】:

      【解决方案4】:

      好吧,我想,需要添加年份而不是删除,并根据明天做。

      $age = 30;
      $minimum =  Carbon::today()->subYears($age)->toDateString();
      $maximum = Carbon::tomorrow()->subYears($age + 1)->toDateString();
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-10-29
        • 2021-09-14
        • 2012-09-05
        • 1970-01-01
        • 1970-01-01
        • 2019-09-05
        • 1970-01-01
        相关资源
        最近更新 更多