0

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

我有这个代码:

$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
}       

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

4

3 回答 3

3

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

尝试打印出 和 的$first$second

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

虽然我建议使用带有新代码的DateTime&DateTimeZone类,但它们更易于使用,尤其是当您正在做任何涉及多个时区的事情时。

于 2012-08-14T03:05:55.040 回答
0

希望我能正确理解你的情况。直接攻击这个会失败很多次,因为服务器时区(你通过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 解决,而无需将其发送到您的服务器,除非您想在您的服务器上对其进行处理

于 2012-08-14T03:15:48.207 回答
0

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

于 2012-08-14T03:07:08.520 回答