【问题标题】:Setting date function to the correct time zone将日期功能设置为正确的时区
【发布时间】:2016-10-28 13:52:38
【问题描述】:

我有一个日期函数,它将DATE TIME 列输出到更易读的时间读取方法,例如今天 9:51。但是,我的日期正在读取的时区是我的服务器所在的时区,即美国 CST。有没有办法让它读取 EST?甚至显示任何区域的正确时间?

function fixDate($strDateTime) {

    $strFormat = 'M, j, Y';
    $strFormatTime = '\a\t g:ia';
    $intTimeStamp = strtotime($strDateTime);
    $strDate = date($strFormat, $intTimeStamp);
    $strTime = date($strFormatTime, $intTimeStamp);

    if($strDate == date($strFormat)) {
        return "Today " . $strTime;
    }
    elseif($strDate == date($strFormat, strtotime('yesterday'))) {
        return "Yesterday " . $strTime;
    }
    else {
        return $strDate . " " . $strTime;
    }
}

【问题讨论】:

  • 看看DateTimeDateTime->setTimezone 你可能会收到一个DateTime 对象而不是一个字符串,然后在“美化”你的日期之前将它转换为客户端DateTimeZone。这在客户端更容易,但可以在服务器 AFAIK 中完成。

标签: php function date time


【解决方案1】:

【讨论】:

    【解决方案2】:

    您可以在配置文件或函数中设置时区,如下所示:

    date_default_timezone_set('America/Toronto'); //whatever timezone you have
    

    你猜是:

    date_default_timezone_set('America/New_York');
    

    【讨论】:

      【解决方案3】:

      您可以使用 AJAX 来做到这一点。此代码将自动检测时区并根据客户所在国家/地区显示当前时间。

      将此添加到您的主页。 <div id="currentTime"></div> 用于显示当前时间。

      <script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js">
      </script>
      <script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/jstimezonedetect/1.0.4/jstz.min.js">
      </script>
      <script type="text/javascript">
        $(document).ready(function(){
          var zoneDetect = jstz.determine(); 
          var timezone = zoneDetect.name(); 
          $.get("cookie_set.php", {timezone: timezone}, function(result){
              $('#currentTime').html(result);
          });
        });
      </script>
      
      <div id="currentTime"></div>
      

      创建另一个页面time_set.php。并添加以下代码。此页面用于检索时间。

      <?php
      date_default_timezone_set($_GET['timezone']);
      function fixDate($strDateTime) {
          return $strDateTime;
      }
      echo fixDate(date('Y-m-d h:i:s'));
      ?>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-04-25
        • 2016-03-26
        • 2020-07-08
        • 2017-10-10
        • 1970-01-01
        • 2020-09-15
        • 1970-01-01
        • 2018-05-10
        相关资源
        最近更新 更多