在PHP

时间:2017-03-17 06:37:12

标签: php datetime

我正在开展一个项目,可以节省UTC区域的时间。我想在前端Asia/Kolkata区显示时间。

$createdAt = '2017-03-16 23:21:56'; 

/* The indian time was 2017-03-17 11:52 when the record was placed, so after converting it to Asia/Kolkata it should display 2017-03-17 11:52 (seconds does not matter) */
  

我的PHP代码将其转换为亚洲/加尔各答

$createdAt = '2017-03-16 23:21:56';
$dateFrom = new DateTime($createdAt, new DateTimeZone('America/Chicago'));
$dateFrom->setTimezone(new DateTimeZone('Asia/Kolkata'));
$IST = $dateFrom->format('Y-m-d H:i:s');

输出为2017-03-17 09:51:56而非2017-03-17 11:52:56。输出显示实际时间前2小时。我无法理解。

你的建议对我很有帮助。

1 个答案:

答案 0 :(得分:1)

如果您的输入日期/时间在Chicago time zone,那么应该考虑夏令时。更改发生在当地时间3月12日02:00,因此您的输入(假设$createdAt正确)已经在DST制度中(即UTC -05:00)。

由于加尔各答是UTC + 05:30(并且没有DST调整),您的特定输入的总差异是10:30,这证明了2017-03-17 09:51:56的输出。