如何仅在一个php文件而不是配置文件中更改默认时区?

如何仅在一个php文件而不是配置文件中更改默认时区?,php,timezone,Php,Timezone,我必须为我的一项服务更改时区;因此,对于所有php文件,只有一个文件不在配置中!我怎么能这么做!在那个文件中,我使用的是filectime,但显然它使用的是另一个时区 谢谢你的帮助 如果你需要更多的澄清,请让我知道 增加: 很抱歉,但在使用了我所在城市的日期\默认\时区\设置后,我的问题仍然没有得到解决!我有一个文件,其创建时间为:2013年11月7日7:36:50,但在使用了我所在城市的时区功能和以下代码后: $createTime = filectime($dirPath . '/' .

我必须为我的一项服务更改时区;因此,对于所有php文件,只有一个文件不在配置中!我怎么能这么做!在那个文件中,我使用的是filectime,但显然它使用的是另一个时区

谢谢你的帮助

如果你需要更多的澄清,请让我知道

增加:

很抱歉,但在使用了我所在城市的日期\默认\时区\设置后,我的问题仍然没有得到解决!我有一个文件,其创建时间为:2013年11月7日7:36:50,但在使用了我所在城市的时区功能和以下代码后:

 $createTime = filectime($dirPath . '/' . $file);
时间仍然是:2013-11-08T00:36:50Z

所以时区似乎对文件时间没有任何影响!除了将小时数(差异小时数)添加到我的文件时间结果中以调整差异外,还有其他更好的方法吗

谢谢

您可能会发现php很有用

date\u default\u timezone\u set()设置所有用户使用的默认时区 日期/时间函数

例如:

date_default_timezone_set('America/Los_Angeles');
这是一本书

编辑: 我忽略了一个事实,即您正在使用
filectime()
。该函数返回一个unix时间戳,该时间戳不包含任何时区数据。因此
date\u default\u timezone\u 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>";
//出于测试目的,获取_文件的时间戳__
//用要测试的实际文件替换_文件_
$time\u created=filectime(\u文件\u);
//从原始时间戳生成日期对象
$date=新的日期时间(日期('r',$time_已创建));
//将日期对象转换为新时区
日期和时区设置($date,时区开放('America/Los\u Angeles');
//输出原始和翻译的时间戳
echo“原始时间戳:“.date('r',$time\u已创建)。”

; echo“洛杉矶时间戳:“.date\u格式($date,'r')”

”;

这里有一个。

将所需的时区放在页面顶部,将原始时区放在页面底部。它应该可以工作。已经回答了
filectime
返回UTC时间戳的int,因此设置任何时区都不会对该函数产生任何影响。相反,它将应用于实际使用时区的日期/时间函数,例如
datetime
类中的那些。您没有向我们展示任何实际的代码,因此不可能提供真正的答案。如果您想要更好的回答,请编辑您的问题以显示您的代码。但是没有代码;只是一个简单的文件!所以我在我原来的问题中加了一个!除了在filectime的结果中添加小时(时差)来调整时差之外,还有其他更好的方法吗?这不是“在PHP中更改时区”的重复。正如Matt Johnson所提到的,
filectime()
不受
date\u default\u timezone\u set()的影响。投票重新开放。很抱歉这么说,但我的问题仍然没有解决!我有一个文件,它的创建时间是:2013年11月7日7:36:50,但在我的城市使用了你的时间之后,它是:2013-11-08T00:36:50对不起,我忽略了你使用的是
filectime()
。您需要知道文件创建时所在的时区,以便将其转换为新时区,因为unix时间戳不包含时区数据。您是否在创建测试文件的同一台服务器上运行PHP代码?谢谢:)是的。在同一台服务器上运行,但文件的输出时间与文件创建的实时时间不同!用一种将服务器时间戳从一个时区转换到另一个时区的方法更新了我的答案。我希望有帮助。