[英]Comparing Two Dates in PHP
比较两个日期时出现问题。 用户将从Datepicker中选择格式('Ym-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
}
这在本地工作正常,但是当我尝试上传它时,它不再起作用。 相反,可以接受以前的日期而不是当前的日期。
可能在服务器上设置的时区与在本地计算机上设置的时区不同。
尝试打印$first
和$second
的值。
如果您使用的是任何老式的PHP日期函数( date
, strtotime
等),则可以(并且应该)使用date_default_timezone_set()
)设置PHP使用的时区。
尽管我建议将DateTime
和DateTimeZone
类与新代码一起使用,但它们更适合使用,尤其是当您执行涉及多个时区的任何事情时。
服务器是否可能与请求来自的时区不在同一时区? 我认为这可能会导致不匹配。
希望我能正确理解您的情况。 直接进行攻击将失败很多次,因为服务器时区(通过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即可解决您所描述的问题,而无需将其发送到服务器
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.