设置 GMT+8 PHP 时间


Set GMT+8 PHP Time

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

当我使用:

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

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

你的假设是不正确的:

int time ( void )

返回自 Unix 时代(1970 年 1 月 1 日 00:00:00 GMT)。

Unix时代是一个固定的时刻。如果您确实收到无效的时间戳,则您的托管服务提供商没有关心设置服务器的时钟。

如果你想做体面的时区感知日期处理,我建议你了解日期时间类和朋友,并且:

  1. 使用命名时区(Europe/Madrid)而不是UTC偏移量(+01:00),因为它们考虑了夏令时。

  2. 将应用的时区设置为默认时区,这样就无需每次都指定时区:

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

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

功能date_default_timezone_set

支持的时区列表

例:

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

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

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

我不确定,但是,time() 返回相当于 GMT 的时间戳,因此,添加 8 小时的时间戳将为您提供 GMT+8。同样,您甚至可以减去时间

你可以

使用 date_default_timezone_set() 函数,例如

date_default_timezone_set('Asia/Dhaka');