2017-03-17 106 views
0

我正在开发一个项目,它可以节省UTC区域的时间。我想在前端的Asia/Kolkata区域中显示时间。将日期和时间从UTC转换为IST,反之亦然PHP

$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

如果您的输入日期/时间在Chicago time zone,则应考虑DST。变化发生在当地时间3月12日02:00,所以你的输入(假设$createdAt是正确的)已经在DST状态(即UTC -05:00)。

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

+0

好了解,所以你的意思是没有办法将时间从一个时区转换到另一个时区,而不会影响一分钟。 感谢您的回复 –

+0

@SantanuBiswas所以你想围绕它到最近的一分钟或剥去秒? – ewcz

相关问题