Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/290.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
用户最佳GMT时间配置| PHP_Php_Datetime_Time_Timestamp - Fatal编程技术网

用户最佳GMT时间配置| PHP

用户最佳GMT时间配置| PHP,php,datetime,time,timestamp,Php,Datetime,Time,Timestamp,我想知道当用户设置自己的GMT时间时,如何进行最佳用户配置,例如,如果用户位于GMT+3时区,并且用户通过UCP进行设置 我所做的是,下拉菜单中的每个选项: <select name="timezone"> ... <option value="-7200">GMT-2</option> <option value="-3600">GMT-1</option> <option value="0"&g

我想知道当用户设置自己的GMT时间时,如何进行最佳用户配置,例如,如果用户位于GMT+3时区,并且用户通过UCP进行设置

我所做的是,下拉菜单中的每个选项:

<select name="timezone">
    ...
    <option value="-7200">GMT-2</option>
    <option value="-3600">GMT-1</option>
    <option value="0">GMT</option>
    <option value="3600">GMT+1</option>
    <option value="7200">GMT+2</option>
    ...
</select>
使用此时间戳格式输出的:

gmdate("D jS M Y @ g:iA", $timezone);
但问题是,如果我使用低于GMT的值,例如GMT-1、GMT-6,它会变为+


问题是,将时间戳配置为用户首选的GMT时间的最佳方式是什么?

问题在于:

if($row['user_timezone'] > 0)
{
    $timezone = $post_time-$row['user_timezone'];
}
else
{
    $timezone = $post_time+$row['user_timezone'];
}
如果你仔细看一下,你会发现它相当于:

$timezone = $post_time - abs($row['user_timezone']);
您应该将其替换为:

$timezone = $post_time - $row['user_timezone'];

问题在于:

if($row['user_timezone'] > 0)
{
    $timezone = $post_time-$row['user_timezone'];
}
else
{
    $timezone = $post_time+$row['user_timezone'];
}
如果你仔细看一下,你会发现它相当于:

$timezone = $post_time - abs($row['user_timezone']);
您应该将其替换为:

$timezone = $post_time - $row['user_timezone'];
这是毫无意义的

您不应让用户选择GMT偏移,否则:

  • 他必须在每次DST转换时更改它
  • 当他在DST时,他会看到在DST之外发生的时区的错误时间,反之亦然
你应该做的是让他从列表中选择一个实际时区(例如欧洲/里斯本)。这是毫无意义的

您不应让用户选择GMT偏移,否则:

  • 他必须在每次DST转换时更改它
  • 当他在DST时,他会看到在DST之外发生的时区的错误时间,反之亦然

你应该做的是让他从列表中选择一个实际的时区(例如,
欧洲/里斯本
)。

顺便说一句,时区偏移也以30分钟的增量存在。顺便说一句,时区偏移也以30分钟的增量存在