查找一个人在特定年龄可以出生的最小和最大日期

Find minimum and maximum date for what a person can be born for a certain age

我正在使用 Laravel,它内置了 Carbon 测年法。我想知道找出一个人可以出生到特定年龄的最短和最长日期的最佳方法是什么。例如,一个 33 岁的人可以出生在 x 和 y 之间。到目前为止,我猜测最小值类似于

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

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

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

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

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

我假设你是这个问题:

考虑到 his/her 岁,一个人到今天可以有 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.

如果您截至今天 (2018-02-22) 年满 33 岁,这意味着

  • 今天是你的生日,你刚满33岁:你的生日是1985-02-22
  • 今天是你 33 岁的最后一天,明天是你 34 的生日。你的生日应该是 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();

好的我想明白了,需要添加年份而不是删除,并根据明天进行。

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