设置GMT + 8 PHP时间

时间:2013-11-12 12:17:36

标签: php time local gmt

我在托管上有一些php脚本,但托管时间与我当地时间不同(GMT + 8) 如何将正确的time()脚本设置为GMT + 8?

当我使用时:

<?
echo time(); //it show me the hosting time;
?>

5 个答案:

答案 0 :(得分:5)

time()将始终返回自纪元以来的秒数。下面的代码将打印两次。

date_default_timezone_set('Europe/London');
echo time();

date_default_timezone_set('America/Cuiaba');
echo time();

Unix时间戳的概念没有按设计携带时区信息。无论时区如何,给定时间戳始终相同。 (自1970-01-01 00:00:00 UTC以来的秒数)如果要表示考虑了时区的时间戳,您将使用当前时区的偏移量调整结果日期。

因此,当使用PHP的date(确实反映时区信息)的'c'格式选项时,您会看到相同的时间戳的不同表示

date_default_timezone_set('Europe/London');
echo time();
echo date('c')

date_default_timezone_set('America/Cuiaba');
echo time();
echo date('c');

将输出:

1384259474
2013-11-12T12:31:14+00:00
1384259474
2013-11-12T09:31:14-03:00

答案 1 :(得分:1)

您的假设是not correct

  

int time ( void )

     

以秒为单位返回以秒为单位测量的当前时间   Unix Epoch(1970年1月1日00:00:00 GMT)。

Unix Epoch是一个固定的时刻。如果您确实收到了无效的时间戳,那么您的托管服务提供商就无法设置服务器的时钟。

如果你想进行体面的时区感知日期处理,我建议你了解DateTime班级和朋友,并且:

  1. 使用指定的时区(Europe/Madrid)而不是UTC偏移量(+01:00),因为它们会考虑DST。

  2. 将应用的时区设置为默认值,因此您无需每次都指定它:

    date_default_timezone_set("Europe/Helsinki"); 
    
  3. 永远不要自己做数学计算(例如,不要手动添加86400秒来增加一天)。

答案 2 :(得分:0)

您必须在php中设置本地时间

函数date_default_timezone_set

List of Supported Timezones

示例:

date_default_timezone_set("America/Fortaleza"); 
echo time(); // Local Time in America/Fortaleza

答案 3 :(得分:0)

将28800(8小时转换为秒)添加到time()的输出

<?php echo (time()+28800); ?>

我不确定但是,time()返回的时间戳等同于GMT,因此添加8小时的时间戳会给你GMT + 8。同样,你甚至可以减去时间

答案 4 :(得分:-3)

您可以使用date_default_timezone_set()函数,例如

date_default_timezone_set('Asia/Dhaka');