2012-08-25 111 views
0

我有一個jQuery datepicker的窗體。我已將日期格式設置爲歐洲方式:dd-mm-yy以便讓用戶看起來很好。但是這個日期值最終需要被格式化回PHPyy-mm-dd這樣才能存儲在我的mysql DATE字段。這裏是我的代碼:

的Jquery:如何格式化jQuery日期選擇器的返回日期輸入值以匹配mysql日期字段?

$("document").ready(function(){ 

    $(function() { 
    $(".datepicker").datepicker({ 
     monthNames: ['januari', 'februari', 'maart', 'april', 'mei', 'juni', 
        'juli', 'augustus', 'september', 'oktober', 'november', 'december'], 
     dayNamesMin: ['Zo', 'Ma', 'Di', 'Wo', 'Do', 'Vr', 'Za'], 
     dateFormat:'dd-mm-yy', 
     }); 
}); 
+0

單程:查看['STR_TO_DATE'](http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_str-to-date) –

+0

什麼是可讀性好,什麼是MySQL日期有區別。你應該以正常的格式顯示日期(年份 - 日期或例如挪威日/月 - 年),然後使用PHP將日期「翻譯」爲MySQL日期格式:) – OptimusCrime

回答

6

有三個選項(按優先一些模糊的順序排列):

  1. 使用MySQL的STR_TO_DATE()函數將字符串轉換:

    INSERT INTO ... VALUES (STR_TO_DATE(:date, '%d/%m/%Y')) 
    
  2. 將從j收到的字符串進行轉換查詢轉換爲PHP DateTime對象:

    $dt = DateTime::createFromFormat('d/m/Y', $_POST['date']); 
    

    ,然後或者:

    • 獲得合適的格式化的字符串:

      $date = $dt->format('Y-m-d'); 
      
    • 獲得UNIX時間戳:

      $timestamp = $dt->getTimestamp(); 
      

      然後將其直接傳遞給MySQL的FROM_UNIXTIME()功能:

      INSERT INTO ... VALUES (FROM_UNIXTIME(:timestamp)) 
      
  3. 手動操作字符串爲有效的文字:

    $parts = explode('-', $_POST['date']); 
    $date = "$parts[2]-$parts[1]-$parts[0]"; 
    
1
// dd-mm-yy to yy-mm-dd 
$date = explode('-',$_POST['date']); 
$mysqlDate = $date[2].'-'.$date[1].'-'.$date[0]; 
3

使用jQuery UI的altFormat選項日期選擇器以另一種格式將日期發送到服務器。這需要表單中的替代字段的ID,這可以隱藏。

$(".datepicker").datepicker({ 
    dateFormat: 'dd-mm-yy', 
    altField: '#actualDate', 
    altFormat: 'yy-mm-dd' 
}); 

這使您可以在以與MySQL兼容的日期格式發送等效日期時向用戶顯示一種日期格式。

相關問題