什么';使用php将日期和时间转换为时间戳的最佳方法是什么?

什么';使用php将日期和时间转换为时间戳的最佳方法是什么?,php,timestamp,strtotime,Php,Timestamp,Strtotime,我需要用php将日期和时间(GMT)转换成时间戳。以下代码显示了我当前使用的内容: <?php $date="2012-06-29 10:50"; $timestamp = strtotime($date); echo $timestamp; ?> 但是,当我在在线转换器中测试时间戳时(http://www.epochconverter.com),生成的日期为2012年6月29日格林尼治标准时间8:50或2小时前。是否有可能strotime()函数不是完全精确的,只是对时间的估

我需要用php将日期和时间(GMT)转换成时间戳。以下代码显示了我当前使用的内容:

<?php
$date="2012-06-29 10:50";
$timestamp = strtotime($date);
echo $timestamp;
?>

但是,当我在在线转换器中测试时间戳时(http://www.epochconverter.com),生成的日期为2012年6月29日格林尼治标准时间8:50或2小时前。是否有可能strotime()函数不是完全精确的,只是对时间的估计?如果是这样的话,有没有更好的方法来计算准确的时间


谢谢。

strotime
假设您正在转换服务器本地时间中的字符串,因此如果服务器时区超出两小时,结果将为wll

中的注释建议了几种解决方案,您可以将UTC附加到日期:

$timestamp = strtotime($date.' UTC');
或者您可以更改脚本的默认时区(这将应用于所有其他时间函数!):

作为最后一种选择,您可以尝试指定字符串的确切格式:

$datetime = date_create_from_format('Y-m-d H:i', $date, new DateTimeZone('UTC'));

$timestamp = date_format($datetime, 'U');
// Alternatively (thanks Herbert) - 5.3+ only
$timestamp = date_timestamp_get($datetime);

这是服务器的时间,如果您与服务器不共享同一时区,即您的服务器在欧洲,而您的服务器不在欧洲,那么您将生成不同的时间,我想感谢您提供的信息。我没有考虑它被转换成我服务器的本地时间。
$datetime = date_create_from_format('Y-m-d H:i', $date, new DateTimeZone('UTC'));

$timestamp = date_format($datetime, 'U');
// Alternatively (thanks Herbert) - 5.3+ only
$timestamp = date_timestamp_get($datetime);