如何使用php date函数从当前年份获得+ 50年

时间:2014-06-14 07:05:26

标签: php date loops strtotime

如何使用php日期函数从当前年份获得+ 50年

你好,

我已尝试使用以下代码获得当年的+ 50年。但是日期功能只允许添加+ 20年。

for($i = date('Y'); $i <= date('Y', strtotime('+50 year')); $i++){
    echo $i.',';
}

如果我加上+ 20年,那么在OutPut下面显示:

2014,2015,2016,2017,2018,2019,2020,2021,2022,2023,2024,2025,2026,2027,2028,2029,2030,2031,2032,2033,2034,

如果我添加+ 50年,则空白OutPut显示:

6 个答案:

答案 0 :(得分:2)

为什么不直接这样做:

$cur_year = date('Y');
for ($i=0; $i<=50; $i++) {
    echo $cur_year++ . ',';
}

DEMO

答案 1 :(得分:2)

尽管这里的一些答案中有相反的迹象,PHP 可以存储和操作2038年以后的日期,但你必须使用DateTime类和PHP&gt; = 5.3来这样做。

从手册: -

  

日期和时间信息在内部存储为64位数字,因此支持所有可以想象的有用日期(包括负数年份)。范围从过去的约2920亿年到未来的相同。

哪个应该足以满足您的需求。

实现目标的最简单方法是: -

$fiftyYearsFromNow = new \DateTime('+ 50 years');

See it working

还有其他方法,看看这些非常有用的类并了解它们。您的示例循环的直接转换可能类似于: -

for($i = new \DateTime(); $i < new \DateTime('+ 50 years'); $i->add(new \DateInterval('P1Y'))){
    echo $i->format('Y') . "<br>\n";
}

See it working

答案 2 :(得分:1)

PHP(以及其他一些语言)无法存储2038年以后的日期。以下是一个相关问题:Why do timestamps have a limit to 2038?

答案 3 :(得分:1)

尝试使用64位架构的操作系统和PHP。这是一个2038问题。阅读更多http://en.wikipedia.org/wiki/Year_2038_problem

答案 4 :(得分:1)

你可以使用......

<?php
for($i = date('Y'); $i <= date('Y') + 50; $i++){
    echo $i.',';
}
?>

答案 5 :(得分:0)

最佳和捷径方法是,这里我从今年开始到+40年

$value = range(date('Y'),date('Y', strtotime('+40 year')));