0

我有一个带有 jQ​​uery datepicker 的表单。我已将日期格式设置为欧洲方式:dd-mm-yy为了使它对用户看起来不错。然而,这个日期值最终需要在PHP中重新格式化,yy-mm-dd以便可以存储在我的mysql DATE 字段中。这是我的代码:

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

您有三个选项(以某种模糊的优先顺序):

  1. 使用 MySQL 的STR_TO_DATE()函数来转换字符串:

    INSERT INTO ... VALUES (STR_TO_DATE(:date, '%d/%m/%Y'))
    
  2. 将从 jQuery 接收到的字符串转换为 PHPDateTime对象:

    $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]";
    
于 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 兼容的日期格式发送等效日期。

于 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 回答