0

我必须更改我的一项服务的时区;所以只有一个文件不在所有 php 文件的配置中!我怎样才能做到这一点!在那个文件中我正在使用 filectime 但显然它正在使用另一个时区!

感谢您的帮助。

如果您需要更多说明,请告诉我

添加:

很抱歉,但在我的城市使用 date_default_timezone_set 之后,我的问题仍未解决!我有一个文件,它的创建是:2013 年 11 月 7 日 7:36:50,但是在为我的城市使用您的时区功能和以下代码之后:

 $createTime = filectime($dirPath . '/' . $file);

$creattime 仍然是:2013-11-08T00:36:50Z

所以似乎时区对filectime没有任何影响!除了在我的 filectime 的结果中添加小时(差异小时)来调整差异,还有其他更好的方法吗?

谢谢

4

1 回答 1

2

您可能会发现 phpdate_default_timezone_set()很有帮助。

date_default_timezone_set() 设置所有日期/时间函数使用的默认时区。

例如:

date_default_timezone_set('America/Los_Angeles');

这是支持的时区列表

编辑:

我忽略了您正在使用filectime(). 该函数返回一个 unix 时间戳,它不包含任何时区数据。所以date_default_timezone_set()不会影响那些结果。

相反,您可以将日期对象从服务器的时区“翻译”到 PHP 中的不同时区,如下所示:

// for testing purposes, get the timestamp of __FILE__
// replace __FILE__ with the actual file you want to test
$time_created=filectime(__FILE__);

// build date object from original timestamp
$date=new DateTime(date('r',$time_created));

// translate the date object to a new timezone
date_timezone_set($date, timezone_open('America/Los_Angeles'));

// output the original and translated timestamps
echo"<p>Original Timestamp: ".date('r',$time_created)."</p>";
echo"<p>Los Angeles Timestamp: ".date_format($date,'r')."</p>";

这是一个工作示例

于 2013-11-08T00:37:21.387 回答