Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/250.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
更改PHP默认时区不起作用_Php_Date_Timezone - Fatal编程技术网

更改PHP默认时区不起作用

更改PHP默认时区不起作用,php,date,timezone,Php,Date,Timezone,我试图将一行代码添加到一个以时间为前缀的html文档中。我希望时区与我相对,但我无法将其更改为默认UTC。我已经在php.ini文件中更改为PST,并使用了date_default_timezone_set'America/Los_Angeles';但它仍然比我的时区提前7小时打印时间。下面是处理时间的代码: session_start(); if(isset($_SESSION['name'])) { date_default_timezone_set('America/Los_Ang

我试图将一行代码添加到一个以时间为前缀的html文档中。我希望时区与我相对,但我无法将其更改为默认UTC。我已经在php.ini文件中更改为PST,并使用了date_default_timezone_set'America/Los_Angeles';但它仍然比我的时区提前7小时打印时间。下面是处理时间的代码:

session_start();
if(isset($_SESSION['name']))
{
    date_default_timezone_set('America/Los_Angeles');

    $msg = $_POST['text'];

    $fo = fopen("log.html", 'a');
    fwrite($fo, "<div class=msgln>(".date("g:i A").") <b  style=color:red;>".$_SESSION['name']."</b>: ".stripslashes(htmlspecialchars($msg))."<br></div>
    ");
    fclose($fo);
}

首先确保你使用的是有价值的时区。您可以在PHP文档中找到


第二个问题是在不指定时间戳的情况下使用。这默认为根据文档中的注释生成的时间戳,即UTC时间。您必须使用或手动从UTC中减去差值。

首先确保您使用的是有值时区。您可以在PHP文档中找到


第二个问题是在不指定时间戳的情况下使用。这默认为根据文档中的注释生成的时间戳,即UTC时间。您必须使用UTC或手动从UTC中减去差值。

服务器应设置为UTC,您不应希望更改默认值。相反,您要做的是基于时间创建一个DateTime对象,然后将其转换为您想要的时区,然后显示

$now = new DateTime();
$now->setTimezone(new DateTimeZone('America/Los_Angeles'));
echo $now->format('g:i A');

我不知道您的格式字符串是否有效,但支持format方法与您在原始示例中使用的日期函数所接受的方法兼容。

服务器应设置为UTC,并且您不应更改默认值。相反,您要做的是基于时间创建一个DateTime对象,然后将其转换为您想要的时区,然后显示

$now = new DateTime();
$now->setTimezone(new DateTimeZone('America/Los_Angeles'));
echo $now->format('g:i A');

我不知道您的格式字符串是否有效,但支持format方法与您在原始示例中使用的日期函数所接受的方法兼容。

如果使用“etc/GMT”,您可以将dateTime对象设置为所需时区,如下所示:

$dtz = new DateTimeZone('etc/GMT-10');
$dt = new DateTime(date("Y-m-d h:i A"), $dtz); 
$date = gmdate("Y-m-d h:i A", $dt->format('U'));

如果使用“etc/GMT”,可以将dateTime对象设置为所需的时区,如下所示:

$dtz = new DateTimeZone('etc/GMT-10');
$dt = new DateTime(date("Y-m-d h:i A"), $dtz); 
$date = gmdate("Y-m-d h:i A", $dt->format('U'));


哦,对了,我也试过美国/洛杉矶,但效果不太好?名单上写着America/Los_AngelesCopy并直接贴在了网站上,不是吗。我读到的每一篇文章都说这是你应该怎么做的,但它不起作用?不知道这条评论是否仍然相关:在调查中,我遇到了这样一个问题:这个函数似乎有一些跨平台的问题。从一小时中减去7小时的最佳方法是什么?哦,对了,我也试过美国/洛杉矶,但效果不太好?名单上写着America/Los_AngelesCopy并直接贴在了网站上,不是吗。我读到的每一篇文章都说这是你应该怎么做的,但它不起作用?不知道这条评论是否仍然相关:在调查中,我遇到了这样一个问题:这个函数似乎有一些跨平台的问题。从一小时中减去7小时的最佳方法是什么?尽管这并没有回答问题,但这是正确的方法,以防其他人看到这篇文章,我会将你的标记为正确。我不知道我是否应该说,但使用UTC确实使一些基于时间的任务变得更容易。再说一次,你真正需要的是一个准确记录的时间,然后可以很容易地翻译,如果必要的话。但是,我完全同意,您不想做的是在脚本执行过程中定期更改服务器时间/时区。。。关于使用和节省时间的讨论很好:虽然这并没有回答问题,但这是正确的方法,以防其他人看到这篇文章,我会将你的文章标记为正确。我不知道我是否应该说,但使用UTC确实使一些基于时间的任务变得更容易。再说一次,你真正需要的是一个准确记录的时间,然后可以很容易地翻译,如果必要的话。但是,我完全同意,您不想做的是在脚本执行过程中定期更改服务器时间/时区。。。关于使用和节省时间的讨论很好:FTP连接丢失,文件更新失败。我没有看到这一点,我想知道为什么这没有任何区别。在哪一点上这不起作用?我只是好奇,所以我们知道是什么解决了你眼前的问题。基本情况是这样的,我在本地计算机上编辑代码,保存时应该只是自动上传/覆盖先前存在的文件,但是我的连接丢失了,我的连接断开了一秒钟或者什么的,当我保存而不是连接时,它刚刚把文件保存到我的硬盘上。我刚刚重新连接并上传了文件,问题得到了解决。FTP连接中断,文件更新失败。我没有看到这个,我想知道为什么没有
没什么区别。这在哪一点上不起作用?我只是好奇,所以我们知道是什么解决了你眼前的问题。基本情况是这样的,我在本地计算机上编辑代码,保存时应该只是自动上传/覆盖先前存在的文件,但是我的连接丢失了,我的连接断开了一秒钟或者什么的,当我保存而不是连接时,它刚刚把文件保存到我的硬盘上。我刚刚重新连接并上传了文件,问题就解决了。