【问题标题】:how can change (America/Chicago) time into indian(Asia/Kolkata) time如何将(美国/芝加哥)时间更改为印度(亚洲/加尔各答)时间
【发布时间】:2016-10-07 16:15:55
【问题描述】:

$row['created'] $row['created'] have time like 2016-10-07 01:31:42 . 和时区(America/Chicago) 。 所以我想根据印度时区显示时间。我正在使用下面显示的代码,但无法正常工作。

$timestamp = strtotime($row['created']);
    date_default_timezone_set("Asia/Kolkata");
    echo date('r', $timestamp);

【问题讨论】:

  • 定义“不工作”。

标签: php timezone


【解决方案1】:

试试这个代码保存为印度时间。

<?php
    $date=date_create('2016-10-07 01:26:56',timezone_open("America/Chicago"));
    echo date_format($date,"Y-m-d H:i:sP")."<br>";

    date_timezone_set($date,timezone_open("Asia/Kolkata"));
    $indiatime = date_format($date,"Y-m-d H:i:sP") . "<br>";
    echo $indiatime ;
?>

【讨论】:

  • 随时@MKB。谢谢。
【解决方案2】:

您可以使用 DateTime 类。看看这个DateTime doc example

$date = new DateTime($row['created'], new DateTimeZone('America/Chicago'));
echo $date->format('Y-m-d H:i:sP') . "\n";

$date->setTimezone(new DateTimeZone('Asia/Kolkata'));
echo $date->format('Y-m-d H:i:sP') . "\n";

这将让您在时区之间跳转。

【讨论】:

    【解决方案3】:

    试试这个,使用 timezone_open 和 date_format

    $timestamp = "2016-10-07 01:31:42";
    $date = date_create($timestamp, timezone_open('Asia/Kolkata'));
    echo date_format($date, 'Y-m-d H:i:sP') . "\n";  //echo 2016-10-07 01:31:42+05:30
    

    $timestamp = "2016-10-07 01:31:42";
    $user_tz = 'Asia/Kolkata';    
    echo $timestamp. "\n"; // echo 2016-10-07 01:31:42
    
    $schedule_date = new DateTime($timestamp, new DateTimeZone($user_tz) );
    $schedule_date->setTimeZone(new DateTimeZone('UTC'));
    $triggerOn =  $schedule_date->format('Y-m-d H:i:s');
    
    echo $triggerOn; // echo 2016-10-06 20:01:42
    

    DEMO

    【讨论】:

      【解决方案4】:

      如果您使用的是 mysql,您也可以这样做:

      SELECT CONVERT_TZ(created,'America/Chicago','Asia/Kolkata');
      

      当您从数据库中获取数据时,您可能会使用以下查询,而不是使用 php 编码:select field1,field2,created from &lt;tablename&gt; where &lt;yourCondition&gt;。而不是 doinf 以这种方式更新您的查询:

      select field1,field2,CONVERT_TZ(created,'America/Chicago','Asia/Kolkata') from &lt;tablename&gt; where &lt;yourCondition&gt;

      【讨论】:

      • 这是一个mysql内置函数来转换时区:CONVERT_TZ(dt,from_tz,to_tz);使用它,您可以明智地转换日期区域。有关更多详细信息,请尝试此链接:http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_convert-tz
      • 好的,谢谢......我不想改变数据库......我想改变回声时间......
      • 一些学生给出了正确答案 Bartek Rudnik 和 aalam see
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-28
      • 1970-01-01
      • 2021-10-21
      • 2016-03-17
      • 1970-01-01
      • 2020-08-03
      相关资源
      最近更新 更多