【问题标题】:How to format the returned date input value from a jQuery datepicker in order to match mysql DATE field?如何格式化从 jQuery datepicker 返回的日期输入值以匹配 mysql DATE 字段?
【发布时间】:2012-08-20 20:07:43
【问题描述】:

我有一个带有 jQ​​uery 日期选择器的表单。我已将日期格式设置为欧洲方式: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',
        });
});

【问题讨论】:

  • 一种方法:看看STR_TO_DATE
  • 可读性好和 MySQL 日期是有区别的。您应该以您来自的正常形式(年-月-日或例如挪威日-月-年)显示日期,然后使用 PHP 将日期“翻译”为 MySQL-date 格式:)

标签: php jquery mysql date


【解决方案1】:

您有三个选项(按某种模糊的偏好顺序):

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

    INSERT INTO ... VALUES (STR_TO_DATE(:date, '%d/%m/%Y'))
    
  2. 将从 jQuery 接收到的字符串转换为 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]";
    

【讨论】:

    【解决方案2】:

    使用 jQuery UI 的 altFormat 选项让 datepicker 以另一种格式将日期发送到服务器。这需要表单中备用字段的 ID,可以隐藏。

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

    这使您可以向用户显示一种日期格式,同时以与 MySQL 兼容的日期格式发送等效日期。

    【讨论】:

      【解决方案3】:
      // dd-mm-yy to yy-mm-dd
      $date = explode('-',$_POST['date']);
      $mysqlDate = $date[2].'-'.$date[1].'-'.$date[0];
      

      【讨论】:

        猜你喜欢
        • 2015-09-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-01-25
        • 2013-08-15
        • 2015-09-13
        • 1970-01-01
        相关资源
        最近更新 更多