You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改jQuery datetimepicker POST提交时的返回日期格式

问题描述

我正在使用jQuery datetimepicker插件,将日期显示格式设置为DD/MM/YYYY,当前页面展示的日期效果正常,但我希望在发起post请求提交数据时,日期能以2022-07-22(YYYY-MM-DD格式)传输,与使用HTML5原生datepicker时的提交日期格式一致。该需求既可以在服务端controller层处理,也可以在客户端结合datetimepicker和moment完成配置,优先推荐客户端实现,无需改动服务端逻辑。

当前已有的初始化代码如下:

$(document).ready(function() {
  $.datetimepicker.setDateFormatter('moment');
  $(".datepicker").datetimepicker({
     timepicker: false,          
     format: 'DD/MM/YYYY',
  });
})
实现方案

客户端实现(推荐)

以下两种实现方式都不需要改动服务端代码,最终提交行为和原生datepicker完全对齐。

  • 方式1:使用插件原生配置分离显示值与提交值(最简便)
    jQuery datetimepicker原生提供altField和altFormat配置项,专门用于区分页面展示格式和实际提交值格式,不需要写额外的转换逻辑:

    $(document).ready(function() {
      $.datetimepicker.setDateFormatter('moment');
      $(".datepicker").datetimepicker({
         timepicker: false,          
         format: 'DD/MM/YYYY', // 页面面向用户展示的日期格式
         altField: '#submitDate', // 关联存储提交值的隐藏输入框
         altFormat: 'YYYY-MM-DD' // 实际提交使用的日期格式
      });
    })
    

    对应页面补充一个隐藏输入框,设置为接口要求的日期参数名即可:

    <!-- 面向用户显示的输入框 -->
    <input type="text" class="datepicker">
    <!-- 实际提交用的隐藏字段,name和接口参数名保持一致 -->
    <input type="hidden" name="date" id="submitDate">
    

    配置完成后,用户选择日期时插件会自动将YYYY-MM-DD格式的标准日期写入隐藏字段,表单提交时会自动携带该字段值。

  • 方式2:提交时手动转换格式
    如果你不想新增隐藏字段,可以在发起post请求的逻辑中,借助已引入的moment手动转换格式:

    // 表单提交/发起请求的逻辑中
    const displayValue = $('.datepicker').val();
    // 按照页面展示的格式解析日期,再转为提交需要的标准格式
    const submitValue = moment(displayValue, 'DD/MM/YYYY').format('YYYY-MM-DD');
    // 将submitValue作为日期参数传入post请求即可
    

服务端实现

如果不调整前端代码,也可以在controller层接收DD/MM/YYYY格式的日期字符串后,手动解析为日期对象再转换为YYYY-MM-DD格式做后续处理。但这种方式会让接口参数格式和前端展示逻辑强耦合,后续如果修改前端日期展示格式,服务端解析逻辑也要同步修改,维护成本更高,不推荐优先使用。

内容的提问来源于stack exchange,提问作者norman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 14:18:22