如何使用php日期函数从当前年份获得+50年
你好,
我已经尝试下面的代码从今年获得+50年。但是日期函数只允许加20年。
for($i = date('Y'); $i <= date('Y', strtotime('+50 year')); $i++){
echo $i.',';
}
如果我添加+20年,那么下面的输出显示:
2014,2015,2016,2017,2018,2019,2020,2021,2022,2023,2024,2025,2026,2027,2028,2029,2030,2031,2032,2033,2034,
,如果我加上+50年,则空白输出显示:
您可以使用…
<?php
for($i = date('Y'); $i <= date('Y') + 50; $i++){
echo $i.',';
}
?>
为什么不直接手工操作呢?
$cur_year = date('Y');
for ($i=0; $i<=50; $i++) {
echo $cur_year++ . ',';
}
尽管在这里的一些答案中有相反的指示,PHP 可以存储和操作2038年以后的日期,但是您必须使用DateTime类和PHP>= 5.3来这样做。
从手册:-
日期和时间信息在内部存储为64位数字,因此支持所有可能有用的日期(包括负数)。这个范围从过去的2920亿年到未来的2920亿年。
应该能满足你的需要。
实现你想要的最简单的方法是:-
$fiftyYearsFromNow = new DateTime('+ 50 years');
看到它在工作
还有其他的方法,看看这些非常有用的类并了解它们。您的示例循环的直接转换可能看起来像这样:-
for($i = new DateTime(); $i < new DateTime('+ 50 years'); $i->add(new DateInterval('P1Y'))){
echo $i->format('Y') . "<br>n";
}
PHP(和其他一些语言)不能存储2038年以后的日期。这里有一个相关的问题:为什么时间戳有2038年的限制?
尝试使用64位体系结构的OS和php。这是2038年的问题。阅读更多http://en.wikipedia.org/wiki/Year_2038_problem
最好和快捷的方法是,这里我从今年到+40年
$value = range(date('Y'),date('Y', strtotime('+40 year')));