2012-10-13 105 views
0

我正在使用jquery日期选择器,并且还通过php日期('Y-m-D')函数设置日期。他们两人今天给出了不同的日期。 jquery选择器填满php日期前一天的日期()。这里是jQuery的函数。我需要jQuery来显示今天的相同日期为php。JQuery和PHP日期差异

<script type="text/javascript" charset="utf-8"> 
     var $j = jQuery.noConflict();     
     $j(function() 
      { 

       // initialise the "Select date" link 
       $j('#date-pick') 
        .datePicker(
         // associate the link with a date picker 
         { 
          createButton:false, 
          startDate: '01/01/1970', 
          endDate: (new Date()).asString() 
          //endDate:<?php echo date('y-m-d'); ?> 
         } 
        ).bind(
         // when the link is clicked display the date picker 
         'click', 
         function() 
         { 
          updateSelects($j(this).dpGetSelected()[0]); 
          $j(this).dpDisplay(); 
          return false; 
         } 
        ).bind(
         // when a date is selected update the SELECTs 
         'dateSelected', 
         function(e, selectedDate, $td, state) 
         { 
          updateSelects(selectedDate); 
         } 
        ).bind(
         'dpClosed', 
         function(e, selected) 
         { 
          updateSelects(selected[0]); 
         } 
        ).val(new Date().asString()).trigger('change'); 

       var updateSelects = function (selectedDate) 
       { 
        var selectedDate = new Date(selectedDate); 
        if(selectedDate != "Invalid Date") 
        { 
        $j('#d').val(selectedDate.getDate()); 
        $j('#m').val(selectedDate.getMonth()+1); 
        $j('#y').val(selectedDate.getFullYear()); 
        } 
       } 
       // listen for when the selects are changed and update the picker 

       // default the position of the selects to today 
       var today = new Date(); 
       updateSelects(today.getTime()); 

      }); 
     </script> 

回答

1

jQuery在php使用服务器的日期时使用客户端计算机的日期。如果你没有在php中设置默认时区,它们基本上是不同的。看看这个: http://php.net/manual/en/function.date-default-timezone-set.php

您可以设置(如PHP5.4)

由于服务器的日期中的使用位于PHP主目录下的php.ini文件的默认时区日期选择:

一个快速谷歌搜索导致我这样的:how to display server side dates in jquery datepicker? 基本上他们做了什么根据当前时间戳是创建一个新日期:

$timestamp = strtotime("2012-08-02"); 

minDate: new Date('<?php echo $timestamp; ?>'); 
+0

有没有一个我可以使日期选择器使用PHP日期,像回声日期( );在上面的代码中的某处? –

+0

我已经更新了答案。 –

1

不要相信客户的日期和时间

这些值可以随意改变。

只是在劝告上使用它们。

除了Javascript之外,还有增强用户体验(即使它更具交互性)。但在一天结束时,你将不得不拿起你没有验证的部分,并验证你从客户端获得的数据

+0

我如何在上面的代码中使用php date()? –

+0

@AmnaAhmed - 您在客户端浏览器中对其用户体验有一点信任。即使用他们的日期。但不要太信任它 - 当这些选择到达服务器(即你的php脚本)时,请验证它并进行验证。 –