我有一个需要支持时区的PHP应用程序。现在我将日期和时间值作为整数存储在数据库中。所以这就是我的工作。
// now create the DateTime object for this time and user time zone
$dtime = new DateTime($date_time, new DateTimeZone($time_zone));
$timestamp = $dtime->format('U');
我不明白的是,即使此人在新西兰(太平洋/奥克兰)并且应用程序存储此日期:24-12-2010 00:00:00使用上述代码,该值返回为: 1293102000
然后使用完全相同的日期/时间并将时区设置为伦敦(欧洲/伦敦)我得到此时间戳:1293148800
为什么时间戳不同?我认为时间戳与Unix Epoch的同一天数相同?
如果它们不同,则意味着当有人在数据库中搜索24-12-2010 00:00:00和24-12-2010 23:59:59之间的所有记录时,我需要使用用户时区来创建时间戳,我必须使用时区首先创建时间戳。
帮助!
答案 0 :(得分:0)
因为新西兰的时区是+1300 UTC,伦敦是UTC,13 x 3600seconds = 1293148800-1293102000
由于您已经存储为整数,因此在构造$dtime
进行测试
# date_create is procedural style
$obj = date_create('24-12-2010 00:00:00', new DateTimeZone('europe/london'));
echo $obj->format('U');
$obj = date_create('24-12-2010 00:00:00');
echo $obj->format('U');