jQuery UI datepicker:虽然我使用 strtotime,但显示 1969

Posted

技术标签:

【中文标题】jQuery UI datepicker:虽然我使用 strtotime,但显示 1969【英文标题】:jQuery UI datepicker: Displaying 1969 although I use strtotime 【发布时间】:2012-04-21 04:45:10 【问题描述】:

我有 php+JQUERY 房间预订应用程序。我正在使用 datepicker 小部件来选择日期,但遇到了问题。我尝试将所选日期(以 dd/mm/yyyy 格式)转换为 YYYY-mm-dd 格式,以便将其插入到我的数据库中。当我选择第一个日期时,它转换得很好,但是当我选择其他日期时,我看到日期 1969-12-31。这是我的 JQUERY 代码:

    $(function() 
    $( "#datepicker" ).datepicker( 
        showOn: "button",
        buttonImage: "images/calendar.gif",
        buttonImageOnly: true,          
        minDate: 0, 
        maxDate: "+3W", 
        dateFormat: "dd/mm/yy",
        beforeShowDay: function (date) 
        var day = date.getDay();
        return [(day == 0 || day == 1 || day == 2 || day == 3 || day == 4), ''];
        ,
        onSelect: function(dateText) 
            $("#registration").load("room.php #registration", selectedDate: dateText, function()  
                $( "input:submit, a, button", ".registration" ).button();
                $( "a", ".registration" ).click(function()  return false; );
            );

        

    );
    );  

然后我回显测试结果:

    <?php if(isset($_POST['selectedDate']))
            
              $selectedDate=$_POST['selectedDate']; 
              echo date('Y-m-d',strtotime((string)$selectedDate)); 
            
    ?>

这是我应用中的一张图片:http://oi43.tinypic.com/29tv2c.jpg

1:

【问题讨论】:

【参考方案1】:

最终我通过了这个问题。我没有在 PHP 中转换它,而是在 JS 中转换它:

        onSelect: function(dateText) 

        //Converting the date format by spliting the date.
        var dt= dateText;
        var arrDt = dt.split('/');
        var newDt = arrDt[2] + "-" + arrDt[1] + "-" + arrDt[0];

        //Loading the rooms div acoording to the sent selected date in JSON format  
            $("#registration").load("room.php #registration", selectedDate: newDt, function()  
                $( "input:submit, a, button", ".registration" ).button();
                $( "a", ".registration" ).click(function()  return false; );
            );

        

但是我还是不知道是什么导致了date()函数转换的问题!

【讨论】:

【参考方案2】:

您在 mysql 中存储的选定日期的类型是什么?对于 DATE 数据类型,您只需将 'YYYY-MM-DD 格式传递给 INSERT 语句。

详情请见this question

还有this http://dev.mysql.com/doc/refman/5.5/en/datetime.html

【讨论】:

我不会尝试将其传递给 MYSQL,我只是在 php 中回显转换以用于测试目的。选定的日期来自 jquery datepicker,同时我要做的就是用 PHP 中的日期函数转换它的格式。我只是不明白为什么它会部分工作! @user1293194 因为 strtotime 函数将字符串格式转换为表示从 1970 年 1 月 1 日(UNIX EPOCH 时间)开始的秒数的 int 数字。这样您就无法在 1970 年 1 月 1 日之前存储价值。

以上是关于jQuery UI datepicker:虽然我使用 strtotime,但显示 1969的主要内容,如果未能解决你的问题,请参考以下文章

jQuery UI 中的 datepicker( )方法

使用 jquery-ui/datepicker 的内存泄漏

jquery UI datepicker汉化

使用 jquery 验证和 jquery-ui datepicker

将 JQuery UI Datepicker 与来自 Jquery UI 主题的图标一起使用

jquery Ui datepicker()