【问题标题】:converting a time to a different timezone with php使用php将时间转换为不同的时区
【发布时间】:2013-06-10 12:40:38
【问题描述】:

$timeposted = "7:10pm";

此值当前是加拿大时间(魁北克)。我正试图找到一种将其转换为法国时间的方法。我该怎么做?

【问题讨论】:

    标签: php date time timezone


    【解决方案1】:

    假设您的 PHP 配置设置为魁北克时间,您可以通过执行以下操作将其转换为法国的时区:

    $date = new DateTime('7:10pm', new DateTimeZone('Europe/Paris'));
    echo $date->format('Y-m-d H:i:sP');
    

    或者,如果您的服务器未设置为魁北克时区,您可以:

    $date = new DateTime('7:10pm', new DateTimeZone('America/Montreal'));
    
    $date->setTimezone(new DateTimeZone('Europe/Paris'));
    
    echo $date->format('Y-m-d H:i:sP');
    

    返回

    2013-06-14 01:10:00+02:00 
    

    您可以在此处阅读有关 PHP 和时区的更多信息:http://www.php.net/manual/en/datetime.settimezone.php

    【讨论】:

    • 这是一个更干净、更可靠且解释清楚的解决方案,感谢分享。
    【解决方案2】:

    使用 PHP 的 date_default_timezone_set() 函数。

    如果您想将其更改为法国,您可以使用

    date_default_timezone_set('Europe/Paris');
    

    可在此处找到支持的时区列表: http://www.php.net/manual/en/timezones.php

    date_default_timezone_set() 的功能可以在这里找到: http://php.net/manual/en/function.date-default-timezone-set.php

    【讨论】:

      【解决方案3】:

      查看DateTime::setTimezone

      示例

      date_default_timezone_set('America/Los_Angeles');
      
      $datetime = new DateTime('2013-06-13 12:35:23');
      echo $datetime->format('Y-m-d H:i:s') . "\n";
      $timeEurope = new DateTimeZone('Europe/London');
      $datetime->setTimezone($timeEurope);
      echo $datetime->format('Y-m-d H:i:s');
      

      【讨论】:

        【解决方案4】:
        <?php
        date_default_timezone_set('America/Los_Angeles');//Your global default timeZone.
        
        function convertTimeZone($oTime, $oTimeZone, $nTimeZone) 
        {
        //Parameter string $oTime is original time to be converted from in format F-d-Y h:i:s
        //Parameter string $oTimeZone is timezone to be conveted from- Timezone of $oTimeZone
        //Parameter string $nTimeZone is timezone to be conveted to
        
        date_default_timezone_set($oTimeZone);  //Change default timezone to old timezone within this function only.
        
        $originalTime = new DateTime($oTime);
        
        $originalTime->setTimeZone(new DateTimeZone($nTimeZone)); //Convert to desired TimeZone.
        
        date_default_timezone_set('America/Los_Angeles') ; //Reset default TimeZone according to your global settings.
        
        return $originalTime->format('F-d-Y h:i:s A'); //Return converted TimeZone.
        } 
        
        $LATime = convertTimeZone("2011-01-07 19:55:00","America/Chicago", "America/Los_Angeles");
        
        echo $LATime;
        
        ?>
        

        【讨论】:

        • 对不起,我是新手。我刚刚学会了如何格式化我的帖子
        • 没问题!只是想帮忙。
        【解决方案5】:

        您可以使用date_default_timezone_set函数更改当地时区

        例子

        date_default_timezone_set('Europe/Paris');
        

        【讨论】:

          【解决方案6】:

          这是我的函数,它从 mysql 数据库(我完全存储在 UTC)中获取时间并转换为新时区并简单地格式化。

          function changetimefromUTC($time, $timezone) {
              $changetime = new DateTime($time, new DateTimeZone('UTC'));
              $changetime->setTimezone(new DateTimeZone($timezone));
              return $changetime->format('m/d/y h:i a');
          }
          

          这是支持的时区列表 http://us1.php.net/manual/en/timezones.php

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2014-03-23
            • 2012-11-22
            • 2020-10-17
            • 1970-01-01
            • 2015-11-27
            • 1970-01-01
            • 2015-08-30
            • 1970-01-01
            相关资源
            最近更新 更多