【问题标题】:timestamp from both date & time inputs and compare php来自日期和时间输入的时间戳并比较php
【发布时间】:2014-06-02 13:35:57
【问题描述】:

我一直在努力寻找这个问题的确切答案。有很多接近我想要的,但似乎仍然只是关闭。这样做是为了确保无法预订过去的日期。

我有一个输入时间和另一个日期的表单。首先,我不想同时接受这两个输入并将它们转换为时间戳。

此代码不返回任何内容

$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:23am 作为时间,不是 1401625380。根据转换器,这是星期日,2014 年 6 月 1 日 12:23:00 GMT。 有人有返回时间和日期输入的时间戳的工作代码吗?

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

$date = new DateTime(null, new DateTimeZone('Pacific/Auckland'));
$cDate = $date->getTimestamp();
echo $cDate;

并且只会有一个 if 语句来比较两者并回显适当的消息。 我觉得这里有多个问题几乎是我想要实现的,但我无法让它们发挥作用。为接近重复的人道歉。

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

【问题讨论】:

  • "02/06/2014" 至少在一种日期格式中是 2 月 6 日。我建议在 strtotime 中使用 'Y-m-d H:i' 格式。
  • $pDate 和 $pTime 的 var_dump 是什么样的?
  • 字符串(10)“2014-06-05”字符串(5)“16:23”

标签: php date datetime strtotime


【解决方案1】:

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

From php manual about strtotime()

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

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

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

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

【讨论】:

    【解决方案2】:

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

    我相信修复您的地区时区将解决您的问题。

    【讨论】:

    • 我已将 php 文件开头的时区设置为 pacific/auckland & 它返回正确的时区以及 unix 时间戳
    猜你喜欢
    • 2013-03-02
    • 2013-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-22
    • 1970-01-01
    相关资源
    最近更新 更多