JQuery Datepicker getDate格式和PHP

时间:2016-03-12 20:29:33

标签: php jquery datepicker

我正在使用日期选择器来选择日期并将该日期传递给PHP以显示特定日期(from here)的图像。奇怪的是,这适用于Firefox,但不适用于Chrome,Internet Explorer,Edge和Opera。

Datepicker页面上的Javascript

$("#datepicker").datepicker({
onSelect: function() {
    var date = $('#datepicker').datepicker("getDate");
    $.ajax({
        url: "processdate.php",
        type: "POST",
        async: true,
        data: {
            selected_date: date
        },
        success: function(resp) {
            if (resp === "true") {
                window.location.href = "test.php";
            } else {
                alert("nope :-(");
            }
        } 
    });
};

传递给processdate.php,我从那里进一步使用它:

<?php
if(!isset($_SESSION)){
 session_start();
}
if(isset($_POST["selected_date"])){
    $_SESSION["date"] = $_POST["selected_date"];
    echo "true";
} else {
    echo "false";
}
?>

我创建了test.php来回显数据,看看它失败的原因:

<?php
    if(!isset($_SESSION)){
        session_start();
    }
    $datePicker = $_SESSION["date"];

    $datePHP = strtotime($datePicker);
    $date = date('d-m-Y', $datePHP );

    echo $datePicker;
    echo "<br>";
    echo $datePHP;
    echo "<br>";
    echo $date;
?>

在Firefox中输出Test.php,正常工作以及它应该如何:

  

2016年3月2日星期三00:00:00 GMT + 0100
  1456873200个
  2016年2月3日

在Chrome中输出Test.php,无法正常工作,第二行(strtotime)缺失

  

2016年3月2日星期三00:00:00 GMT + 0100(West-Europa(standaardtijd))

     

01-01-1970

正如您所看到的,Chrome似乎没有回显strtotime。与IE / Edge / Opera相同。令我困惑的是,这有可能吗?我尝试设置getDate格式,但这似乎不起作用?

2 个答案:

答案 0 :(得分:0)

你有没有尝试过:

console.log(date);

在您的日期变量上并检查控制台,以确保它实际上是在每个浏览器上获取日期。这个问题最有可能出现在你的javascript上,就像有人已经指出的那样,php在服务器上执行,因此它会在每个浏览器上运行或失败,而不是选择性的。

答案 1 :(得分:0)

我在Chrome和Firefox上都遇到了同样的问题。 PHP strtotime()函数不识别日期/时间字符串,因为它包含时区信息。如果您按以下方式剪切此信息(您必须手动调整时区),它才有效:

<?php
if(!isset($_SESSION)){
    session_start();
}
$datePicker = $_SESSION["date"];
// Remove time zone information from the string so that it can be parsed
$index=strpos($datePicker,"GMT");
$datePicker=substr($datePicker,0,$index-1);
$datePHP = strtotime($datePicker);
$date = date('d-m-Y', $datePHP );

echo $datePicker;
echo "<br>";
echo $datePHP;
echo "<br>";
echo $date;
?>