【问题标题】:PHP get current local time based on GMT offsetPHP 根据 GMT 偏移量获取当前本地时间
【发布时间】:2014-04-22 09:04:22
【问题描述】:

在 php 中有一个函数date_default_timezone_set(),它接受像“UK/London”这样的时区字符串。但不幸的是,我只有用户的 GMT 偏移量。

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

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

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

请帮忙

【问题讨论】:

  • @NorthBridge,那里的偏移量很奇怪,我不要像 $offset=4*60*60; 那样的偏移量;
  • @Sarah 为什么不呢?将您的 GMT +5 转换为 5*60*60 相当容易,不是吗?
  • 由于时区不太可能改变,您可以硬编码一个数组,其中 GMT 偏移量作为键,时区字符串(英国/伦敦)作为值并调用 date_default_timezone_set() ?跨度>
  • @AlexandreN。这可能行不通,因为如果偏移量是关键,它必须是一个多维数组(每个偏移量都有很多时区字符串),事情会变得很糟糕。

标签: php


【解决方案1】:

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

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

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

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

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

【讨论】:

  • 你刚刚发布的答案太复杂了
  • 什么意思?你想要一个更简单的功能吗?你不明白我写了什么?
  • @decceze,请参阅下一个答案。 :D
【解决方案2】:
date_default_timezone_set('GMT');
$curTime = strtotime("+5 hours");
$current_date = date("Y M D H:S, $curTime);
  1. 先设置 GMT 时区或获取 GMT 偏移量。
  2. 获取时间戳
  3. 迄今为止的时间戳

【讨论】:

    猜你喜欢
    • 2015-01-03
    • 2020-08-17
    • 2021-05-10
    • 1970-01-01
    • 1970-01-01
    • 2010-10-05
    • 2012-07-15
    • 1970-01-01
    • 2012-11-28
    相关资源
    最近更新 更多