0

jQueryのdatepickerを使用したフォームがあります。日付形式をヨーロッパ式に設定しましdd-mm-yyた。ユーザーに見栄えを良くするためです。ただし、この日付の値は、最終的にPHPでフォーマットし直して、 mysqlのDATEフィールドyy-mm-ddに格納できるようにする必要があります。これが私のコードです: Jquery:

   $("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',
        });
});
4

3 に答える 3

6

3つのオプションがあります(いくつかのあいまいな優先順位で):

  1. MySQLのSTR_TO_DATE()関数を使用して、文字列を変換します。

    INSERT INTO ... VALUES (STR_TO_DATE(:date, '%d/%m/%Y'))
    
  2. DateTimejQueryから受け取った文字列をPHPオブジェクトに変換します。

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

    そして次のいずれか:

    • 適切なフォーマットされた文字列を取得します。

      $date = $dt->format('Y-m-d');
      
    • UNIXタイムスタンプを取得します。

      $timestamp = $dt->getTimestamp();
      

      FROM_UNIXTIME()次に、これはMySQLの関数に直接渡されます。

      INSERT INTO ... VALUES (FROM_UNIXTIME(:timestamp))
      
  3. 文字列を手動で操作して有効なリテラルにします。

    $parts = explode('-', $_POST['date']);
    $date  = "$parts[2]-$parts[1]-$parts[0]";
    
于 2012-08-25T15:38:06.187 に答える
3

jQuery UI のaltFormatオプションを使用して、datepicker が日付を別の形式でサーバーに送信するようにします。これには、非表示にできるフォームの代替フィールドの ID が必要です。

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

これにより、MySQL と互換性のある日付形式で同等の日付を送信しながら、1 つの日付形式をユーザーに表示することができます。

于 2013-07-05T17:30:14.413 に答える
1
// dd-mm-yy to yy-mm-dd
$date = explode('-',$_POST['date']);
$mysqlDate = $date[2].'-'.$date[1].'-'.$date[0];
于 2012-08-25T15:43:50.320 に答える