Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/272.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根据GMT偏移量获取当前本地时间_Php - Fatal编程技术网

PHP根据GMT偏移量获取当前本地时间

PHP根据GMT偏移量获取当前本地时间,php,Php,php中有一个函数date\u default\u timezone\u set(),它接受类似“UK/London”的时区字符串。但不幸的是,我只有用户的GMT偏移量 假设我在GMT+5上,我想获得基于GMT+5的当前时间。我在谷歌上做了很多搜索,但没有帮助 因为,我没有时区字符串,我正在寻找类似的东西 $current_date = date("Y M D H:S, "GMT +5"); 请帮助您现在只能使用GMT偏移量,也就是说,如果用户半年前告诉您他的GMT偏移量,而您现在想知道他所在

php中有一个函数
date\u default\u timezone\u set()
,它接受类似“UK/London”的时区字符串。但不幸的是,我只有用户的GMT偏移量

假设我在GMT+5上,我想获得基于GMT+5的当前时间。我在谷歌上做了很多搜索,但没有帮助

因为,我没有时区字符串,我正在寻找类似的东西

$current_date = date("Y M D H:S, "GMT +5");

请帮助

您现在只能使用GMT偏移量,也就是说,如果用户半年前告诉您他的GMT偏移量,而您现在想知道他所在的位置是什么时候,那么这是完全没有用的。它基本上可以是几个小时内的任何东西。即使您在几秒钟前得到了偏移量,但如果您恰好遇到DST更改,则在您进行计算时,偏移量可能已经不同

话虽如此,您将需要从格式化时间中添加/减去偏移小时数,这是您唯一可以做的事情

$offset = 5;
$hours  = (gmdate('H') + $offset) % 24;

echo $hours . gmdate(':i:s Y m d');

这只是一个例子,您还需要处理分钟偏移量。

您现在只能专门使用GMT偏移量,也就是说,如果用户半年前告诉您他的GMT偏移量,而您现在想知道他所在的位置是什么时候,这是完全没有用的。它基本上可以是几个小时内的任何东西。即使您在几秒钟前得到了偏移量,但如果您恰好遇到DST更改,则在您进行计算时,偏移量可能已经不同

date_default_timezone_set('GMT');
$curTime = strtotime("+5 hours");
$current_date = date("Y M D H:S, $curTime);
话虽如此,您将需要从格式化时间中添加/减去偏移小时数,这是您唯一可以做的事情

$offset = 5;
$hours  = (gmdate('H') + $offset) % 24;

echo $hours . gmdate(':i:s Y m d');
这只是一个例子,您还需要处理分钟偏移

date_default_timezone_set('GMT');
$curTime = strtotime("+5 hours");
$current_date = date("Y M D H:S, $curTime);
  • 首先设置GMT时区或获取GMT偏移量
  • 获取时间戳
  • 到日期的时间戳
  • 首先设置GMT时区或获取GMT偏移量
  • 获取时间戳
  • 到日期的时间戳

  • 可能是@NorthBridge的重复,偏移量很奇怪,我不希望偏移量像$offset=4*60*60@莎拉为什么不呢?将GMT+5转换为5*60*60相当容易,不是吗?由于时区不太可能改变,您可以硬编码一个数组,将GMT偏移量作为键,时区字符串(英国/伦敦)作为值,并调用date_default_timezone_set()?@AlexandreN。这可能不起作用,因为如果偏移量是键,它将必须是多维数组(每个偏移量都有许多时区字符串),事情会变得很糟糕。可能是@NorthBridge的重复,偏移量在那里很奇怪,我不想要像$offset=4*60*60这样的偏移量@莎拉为什么不呢?将GMT+5转换为5*60*60相当容易,不是吗?由于时区不太可能改变,您可以硬编码一个数组,将GMT偏移量作为键,时区字符串(英国/伦敦)作为值,并调用date_default_timezone_set()?@AlexandreN。这可能行不通,因为如果偏移量是关键的,那么它必须是一个多维数组(每个偏移量都有许多时区字符串),事情会变得很糟糕。你刚刚发布了一个太复杂的答案,意思是什么?你想要一个更简单的函数吗?你不明白我写了什么?@decceze,看看下一个答案你刚刚发布了一个太复杂的答案,意思是什么?你想要一个更简单的函数吗?你不明白我写了什么?@decceze,看看下一个答案D