我正在尝试将日期转换为确切午夜点的时间戳。 为此,我使用以下小功能。
function converttotimestamp($date)
{
$date = str_replace('/', '-', $date);
$date = $date.' 00:00:00';
$date = DateTime::createFromFormat('m-d-Y H:i:s',$date);
return $date->getTimestamp();
}
所以你可以看到,我正在结束午夜时间。 我尝试使用它,如下所示
echo converttotimestamp('7/22/2014');
正如您在unix转换器中运行时所期望的那样,您将获得1405987200
。
但在我的情况下,它返回1405976400
whicj转换为Mon, 21 Jul 2014 21:00:00
。
喔。我在肯尼亚。
答案 0 :(得分:1)
您可能会看到与您预期的时间不同的原因可能是因为您没有考虑相关的时区。您可以通过几种不同的方式设置时区。您可以在运行时设置它:
http://php.net/manual/en/function.date-default-timezone-set.php
您可以在PHP配置文件中设置它:
http://php.net/manual/en/datetime.configuration.php#ini.date.timezone
或者您可以设置DateTime对象的时区:
http://php.net/manual/en/datetime.settimezone.php
每当您在日期之间进行转换时,您必须考虑相关的时区,因为这是系统确定如何在日期格式之间切换,进行比较以及输出特定日期和时间的唯一方法。例如,如果要将日期和时间转换为时间戳,系统必须知道输入日期和时间的时区,以便可以正确转换。看看strtotime
:
http://us2.php.net/manual/en/function.strtotime.php
Unix时间戳是GMT时区,因此请确保相应地转换日期时间。 HTH。