来自日期和时间的时间戳时间输入和比较PHP

时间:2014-06-02 13:35:57

标签: php date datetime strtotime

我一直在努力为这个问题得到一个确切的答案。有许多接近我想要的东西,但似乎仍然只是关闭。这样做的目的是确保不能在过去的日期进行预订。

我有一个表格,其中包含时间和输入的输入。另一个约会。首先,我不想同时考虑这些输入和输入。将它们转换为时间戳。

此代码不返回任何内容

$time_date = sprintf("%s %s", $pDate, $pTime);
$objDate = DateTime::createFromFormat('H:ia d/m/Y', $time_date);
$stamp = $objDate->getTimestamp();
echo $stamp;

所以我尝试过使用类似的东西

$pDate  = $_POST['pDate'];
$pTime  = $_POST['pTime'];
$full_date = $pDate . ' ' . $pTime;
$timestamp = strtotime($full_date);
echo $timestamp;

但由于某种原因,它返回了一个不正确的时间戳。 (我一直在使用在线转换器)02/06/2014作为日期&上午12:23作为时间,不是1401625380.根据转换器是Sun,2014年6月1日12:23:00 GMT。 是否有人使用工作代码返回时间和时间的时间戳。日期输入?

其次,我想将此时间戳与指定的时间戳进行比较。检查它是否大于。我用这个

为我的时区创建了一个时间戳
$date = new DateTime(null, new DateTimeZone('Pacific/Auckland'));
$cDate = $date->getTimestamp();
echo $cDate;

并且只会有一个if语句,用于比较两个和回声相应的消息。 我觉得好像这里有多个问题 ALMOST 我想要实现的目标,但我无法让它们发挥作用。抱歉附近重复。

注意:我正在使用ajax发布表单数据(如果这可能会干扰)。

2 个答案:

答案 0 :(得分:0)

你剪掉的第二段代码是正确的。假设它是日期时间格式(Y-m-d H:i:s)。

From php manual about strtotime()

除非在该参数中指定了时区,否则此函数的每个参数都使用默认时区。

使用date_default_timezone_get()函数检查PHP默认时区。

要比较两个日期,请确保它们都在相同的时区。

对于日期时间输入,我个人使用jQuery UI timepicker插件。

答案 1 :(得分:0)

你收到字符串格式的时间和日期 - 所以我不相信ajax会干扰。 至于你的问题: 首先 - 找出服务器的区域设置时区。你可以通过这个功能来做到这一点:date_default_timezone_get。 如果答案不适合您 - 您可以使用其“姐妹”:date_default_timezone_set,并将其更改为您需要的任何值(如“太平洋/奥克兰” - 请参阅那里的文档)。建议您在完成任务后将其恢复为原始值。

我相信修复您的区域设置时区将解决您的问题。