引言:为什么“当前年份”问题如此热门?
\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。然后他们惊讶地发现网站“活”在了上个世纪。
在本文中,我们将介绍所有流行的在PHP中获取当前年份的方法,从最直观的到更高级的。您将了解如何避免常见错误,为您的项目选择哪种方法,以及如何在不同的时区处理年份。开始吧!
\n\n1. 最简单的方法:date()函数
\n\n所有PHP日期处理函数之王是date()。它接受一个格式参数和一个可选的时间戳。如果不指定时间戳,则使用服务器的当前时间。
如何获取4位数的年份(2024, 2025…)
\n<?php\necho date('Y'); // 输出:2024\n?>\n\nY(大写)表示完整的年份,4位数字。在99%的情况下都应该使用它。
\n\n如何获取2位数的年份(24, 25…)
\n<?php\necho date('y'); // 输出:24\n?>\n\ny(小写)表示两位数的年份。仅当您编写玩具程序或处理遗留代码(很可能已经因Y2K类似问题而损坏)时才使用它。
\n\n实际示例:页脚版权信息
\n<footer>\n <p>© 2010–<?php echo date('Y'); ?> 我的超级网站</p>\n</footer>\n\n这段代码会自动更新页脚中的年份——您无需每年一月手动修改。很酷,对吧?
\n\n2. 面向对象方法:DateTime类
\n\n如果您编写现代PHP(7.x, 8.x),最好使用DateTime类。它更灵活,便于操作,并且更易读。
通过DateTime获取年份
\n<?php\n$now = new DateTime();\necho $now->format('Y'); // 2024\n?>\n\nformat()方法的工作方式与date()相同,但作用于对象。优点是您可以轻松更改日期、添加天数、月份,然后再次格式化。
进阶示例:从特定日期获取年份
\n<?php\n$date = new DateTime('2023-03-15');\necho $date->format('Y'); // 2023\n?>\n\n当您处理数据库并以字符串形式存储日期时,这非常有用。
\n\n3. 老牌函数strftime()(但有注意事项)
\n\nstrftime()函数是获取年份的另一种方法。它的优点是考虑区域设置(语言和地区设置)。例如,在俄语区域设置中,它可以输出俄语的月份名称。
strftime示例
\n<?php\nsetlocale(LC_TIME, 'ru_RU.utf8');\necho strftime('%Y'); // 2024\n?>\n\n但有一个重要的注意事项:从PHP 8.1开始,strftime()函数已被标记为已弃用(deprecated)。它仍然可以使用,但在未来的版本中可能会被移除。如果您编写新代码,最好使用DateTime。
4. $_SERVER['REQUEST_TIME']变量
\n\n有时需要“即时”获取年份,而无需创建对象。为此,可以使用超全局数组$_SERVER。
博客
书籍推荐
推荐阅读