簡體   English   中英

在PHP中比較兩個日期

[英]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日期函數( datestrtotime等),則可以(並且應該)使用date_default_timezone_set() )設置PHP使用的時區。

盡管我建議將DateTimeDateTimeZone類與新代碼一起使用,但它們更適合使用,尤其是當您執行涉及多個時區的任何事情時。

服務器是否可能與請求來自的時區不在同一時區? 我認為這可能會導致不匹配。

希望我能正確理解您的情況。 直接進行攻擊將失敗很多次,因為服務器時區(通過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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM