PHP技术问题:为filemtime添加时区并获取当前文件修改时间
解决方案
核心思路
要实现带主文件修改时间的统一纽约时区页脚,需将页脚改为PHP文件以处理动态逻辑,通过$_SERVER['SCRIPT_FILENAME']获取主文件路径,结合时区设置生成正确时间。
步骤1:编写可动态获取时间的footer.php
<?php // 强制设置纽约时区,需在时间处理前执行 date_default_timezone_set('America/NewYork'); // 获取当前访问的主文件路径(即引入此页脚的文件) $mainScript = $_SERVER['SCRIPT_FILENAME']; // 初始化时间显示内容 $lastModified = 'Unknown'; // 校验文件存在性,避免报错 if (file_exists($mainScript)) { // 获取主文件修改时间戳,转换为带时区的DateTime对象 $modifyTime = new DateTime(); $modifyTime->setTimestamp(filemtime($mainScript)); // 自定义时间格式,可根据需求调整 $lastModified = $modifyTime->format('F j, Y, g:i A'); } ?> <!-- 页脚静态HTML结构 --> <footer style="padding: 1rem; text-align: center; background: #f5f5f5;"> <p>© 2024 你的站点名称 | 最后修改时间:<?php echo $lastModified; ?></p> </footer>
步骤2:在主文件中引入页脚
在任意需要页脚的PHP主文件(如index.php、about.php)的底部添加:
<?php include 'footer.php'; ?>
关键问题排查
之前时间显示异常的原因:
- 误用
__FILE__或__DIR__,会获取footer.php自身的路径而非主文件,导致时间错误。 - 时区设置未放在时间处理前,导致DateTime使用默认时区计算,出现偏差。
- 未校验文件存在性,若主文件路径异常会引发无输出或错误。
- 误用
时间格式自定义:
可修改format()方法的参数,比如:'Y-m-d H:i:s'→ 2024-10-05 15:45:30'l, F jS Y'→ Saturday, October 5th 2024
内容的提问来源于stack exchange,提问作者Rachel Brinkley
相关产品推荐
相关产品推荐

