JQuery Datepicker getDate format and PHP


JQuery Datepicker getDate format and PHP

我正在使用日期选择器来选择一个日期并将该日期传递给PHP以显示特定日期的图像(从这里开始)。奇怪的是,这在Firefox中工作正常,但在Chrome,Internet Explorer,Edge和Opera中则不行。

日期选择器页面上的 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;
?>

输出测试.php在 Firefox 中,工作以及它应该如何:

周三 三月 02 2016 00:00:00 GMT+0100

1456873200 2016-03-02

输出测试.php在 Chrome 中,不起作用,缺少第二行 (strtotime)

周三 三月 02 2016 00:00:00 GMT+0100 (西欧罗巴 (标准))

1970-01-01

如您所见,Chrome似乎没有回声strtotime 。IE/Edge/Opera也是如此。这让我很困惑,这怎么可能?我尝试设置 getDate 格式,但这似乎不起作用?

我在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;
?>

你有没有试过做:

console.log(date);

在您的日期变量上并检查控制台,以确保它实际上在每个浏览器上都通过日期。问题最有可能出在您的javascript上,因为正如有人已经指出的那样,php是在服务器上执行的,因此它可以在每个浏览器上工作或失败,而不是选择性的。