【问题标题】:Comparing Two Dates in PHP在 PHP 中比较两个日期
【发布时间】:2012-08-14 03:03:09
【问题描述】:

我在比较两个日期时遇到问题。用户将从 Datepicker 中选择格式为 ('Y-m-d') 的日期。如果输入不等于当前日期,则会显示错误消息,否则将显示输出。

我有这个代码:

$today = date("Y-m-d");
$date = $_REQUEST['selected_date']; // date selected
$first = strtotime($today);             
$second = strtotime($date);

if ($first != $second){
    //error message 
}else{
    //some code
}       

这在本地工作正常,但当我尝试上传它时,它不再工作了。相反,可以接受前一个日期而不是当前日期。

【问题讨论】:

  • 如果服务器上的时区设置与我的本地机器不同,有没有办法让它完全相同?我应该如何以简单的方式做到这一点?

标签: php date datepicker


【解决方案1】:

服务器上的时区设置可能与本地机器上的不同。

尝试打印出$first$second 的值。

如果您使用任何旧式 PHP 日期函数(datestrtotime 等),您可以(并且应该)使用 date_default_timezone_set() 设置 PHP 使用的时区。

虽然我建议将 DateTimeDateTimeZone 类与新代码一起使用,但它们更易于使用,尤其是在您处理涉及多个时区的任何事情时。

【讨论】:

  • 是的,我已经这样做了,但是为什么当我将日期设置为第二天的 2012-08-15 时,$first 的值是 1990 而 $second 在本地是 1991。但是当我上传它时,$first 的值为 1991,$second 的值为 1990,并且给出了相同的日期。我用它来输出值 echo '';
  • 是的,我正在尽我所能。谢谢:D
  • 如果服务器上的时区设置与我的本地机器不同,有什么方法可以让它完全一样吗?我应该如何以简单的方式做到这一点?
  • 我不完全明白,如果时间已经在下午,我的代码可以工作,但是在早上,它就不起作用。估计是耽误了时间,你怎么看?
  • 你从这里做得很好,我终于明白了。非常感谢。给你更多的力量!
【解决方案2】:

服务器是否有可能与请求来自的时区不同?我认为这可能会导致不匹配。

【讨论】:

    【解决方案3】:

    希望我能正确理解您的情况。直接攻击它会失败很多次,因为服务器时区(您通过date() 获得)将与客户端时区不同。为避免此问题,您需要通过 javascript 将客户端时间发送到您的服务器。 jQuery 示例可能如下所示:

    var date = new Date();
    
    $.post("index.php", { today: (today.getMonth() + 1) + "/" + today.getDate() + "/" + today.getFullYear()}, function(data) {
    
    alert(data); //server response here
    
    });
    

    在服务器上,您可以通过$_POST['today'] 以字符串形式获取客户今天的日期。然后您可以决定如何处理它并将其输出给您的客户。

    或者,您所描述的问题可以仅通过 JavaScript 来解决,而无需将其发送到您的服务器,除非您想在服务器上对其进行处理

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-11-29
      • 2011-04-20
      • 2014-07-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多