我使用以下代码生成时间戳,对于上的相同输入,我总是得到不同的结果
$EventDateZone = new DateTime(str_replace('/', '-', $record['Date']), new DateTimeZone(Config::get('app.timezone')));
$EventDate = strtotime($EventDateZone->format("Y-m-d"));
$EventTimeZone = new DateTime($record['Time'], new DateTimeZone(Config::get('app.timezone')));
$EventTime = strtotime($EventTimeZone->format("H:i:s"));
变量$record['Date]
包括01/04/2014
并且$record['Time']
包括09:26:00 AM
并且Config::get('app.timezone')
是Asia/Dubai
转换时间的问题——这里总是不同——是转换时间1398576360
和1398662760
的结果
我需要生成的时间戳是相同的,因为这个记录将存储在数据库中,我不想让它重复。
DateTime
对象,并给它一个不完整的时间戳(即缺少日期或时间)时,它会填充当前时间中缺少的值。当然,情况总是不同的。
您必须用两者实例化DateTime
对象才能获得UNIX时间戳。您不能分别输出日期和时间的UNIX时间戳,因为这没有任何意义。您的strtotime
代码没有任何意义。如果需要,可以稍后再次将DateTime
对象分隔为日期和时间组件,但不能分隔为两个单独的UNIX时间戳。
$event = DateTime::createFromFormat(
'd/m/Y H:i:s',
"$record[Date] $record[Time]",
new DateTimeZone(Config::get('app.timezone'))
);
echo $event->getTimestamp();
echo $event->format('Y-m-d');
echo $event->format('H:i:s');