我正在开展一个项目,可以节省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小时。我无法理解。
你的建议对我很有帮助。
答案 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
的输出。