如何在PHP中获取当前年份?5种简单方法

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

引言:为什么“当前年份”问题如此热门?

\n\n

看起来,向PHP询问“嘿,今年是哪一年?”并得到答案,似乎再简单不过了。但事实并非如此!“How do I use PHP to get the current year?” 这个问题在Stack Overflow上获得了数万次浏览。为什么呢?

\n\n

首先,这是新手常遇到的第一个任务:在网站页脚输出“© 2024”,在注册表单中生成动态年份列表,或者仅仅检查用户年龄。其次,PHP提供了几种不同的方法,每种方法都有其细微差别。第三(也是最棘手的),初学者经常混淆date('y')和date('Y')——结果得到的不是2024,而是24。然后他们惊讶地发现网站“活”在了上个世纪。

\n\n

在本文中,我们将介绍所有流行的在PHP中获取当前年份的方法,从最直观的到更高级的。您将了解如何避免常见错误,为您的项目选择哪种方法,以及如何在不同的时区处理年份。开始吧!

\n\n

1. 最简单的方法:date()函数

\n\n

所有PHP日期处理函数之王是date()。它接受一个格式参数和一个可选的时间戳。如果不指定时间戳,则使用服务器的当前时间。

\n\n

如何获取4位数的年份(2024, 2025…)

\n
<?php\necho date('Y'); // 输出:2024\n?>
\n\n

Y(大写)表示完整的年份,4位数字。在99%的情况下都应该使用它。

\n\n

如何获取2位数的年份(24, 25…)

\n
<?php\necho date('y'); // 输出:24\n?>
\n\n

y(小写)表示两位数的年份。仅当您编写玩具程序或处理遗留代码(很可能已经因Y2K类似问题而损坏)时才使用它。

\n\n

实际示例:页脚版权信息

\n
<footer>\n    <p>&copy; 2010–<?php echo date('Y'); ?> 我的超级网站</p>\n</footer>
\n\n

这段代码会自动更新页脚中的年份——您无需每年一月手动修改。很酷,对吧?

\n\n

2. 面向对象方法:DateTime类

\n\n

如果您编写现代PHP(7.x, 8.x),最好使用DateTime类。它更灵活,便于操作,并且更易读。

\n\n

通过DateTime获取年份

\n
<?php\n$now = new DateTime();\necho $now->format('Y'); // 2024\n?>
\n\n

format()方法的工作方式与date()相同,但作用于对象。优点是您可以轻松更改日期、添加天数、月份,然后再次格式化。

\n\n

进阶示例:从特定日期获取年份

\n
<?php\n$date = new DateTime('2023-03-15');\necho $date->format('Y'); // 2023\n?>
\n\n

当您处理数据库并以字符串形式存储日期时,这非常有用。

\n\n

3. 老牌函数strftime()(但有注意事项)

\n\n

strftime()函数是获取年份的另一种方法。它的优点是考虑区域设置(语言和地区设置)。例如,在俄语区域设置中,它可以输出俄语的月份名称。

\n\n

strftime示例

\n
<?php\nsetlocale(LC_TIME, 'ru_RU.utf8');\necho strftime('%Y'); // 2024\n?>
\n\n

但有一个重要的注意事项:从PHP 8.1开始,strftime()函数已被标记为已弃用(deprecated)。它仍然可以使用,但在未来的版本中可能会被移除。如果您编写新代码,最好使用DateTime。

\n\n

4. $_SERVER['REQUEST_TIME']变量

\n\n

有时需要“即时”获取年份,而无需创建对象。为此,可以使用超全局数组$_SERVER。

\n\n


                
                

博客

书籍推荐