bootstrap-datepicker发送错误的日期格式

时间:2017-06-17 16:35:26

标签: bootstrap-datepicker

HTML5中的日期标记(<input type="date">)始终以YYYY-MM-DD格式发送数据,而忽略用户可能使用的格式。这很好,但浏览器的默认控件通常很难看。

所以,我正在尝试使用bootstrap-datepicker来帮助用户选择日期。我像这样启动它,它打开正确:

$('#expirationDate').datepicker({
     format: "dd.mm.yyyy"
});

不幸的是,bootstrap-datepicker似乎以用户的格式向服务器发送所选日期(即DD / MM / YYYY)。这显然是一个问题,因为用户可能有不同的偏好。

bootstrap-datepicker是否能够以“YYYY-MM-DD”格式发送数据,无视用户的本地格式?对我而言,这是“常识”功能,但我没有'找到有关它的任何文件。

如果上述问题的答案为“否”,您能否推荐另一个与Symfony 3和Twig完美整合的日期选择器?

3 个答案:

答案 0 :(得分:0)

将来电者功能更改为:

$('#sandbox-container input').datepicker({
    format: "dd/mm/yyyy"
});

O /

答案 1 :(得分:0)

在PHP中

mysql数据库需要Y-m-d格式的日期格式,因此如果要在数据库中插入此日期格式,您需要更改来自datepicker的日期格式。

示例:

$mydate = date("Y-m-d", strtotime($_POST['date']));

&#13;
&#13;
$("#Date").datepicker({
    autoclose:true,
    orientation: "bottom",
    format: "dd-mm-yyyy"
})


$("#Date2").datepicker({
    autoclose:true,
    orientation: "bottom",
    format: "yyyy-mm-dd"
})

$("#Date3").datepicker({
    autoclose:true,
    orientation: "bottom",
    format: "yyyy-M-dd"
})

$("#Date4").datepicker({
    autoclose:true,
    orientation: "bottom",
    format: "dd-M-yyyy"
})


$("#Date5").datepicker({
    autoclose:true,
    orientation: "bottom",
    format: "dd/M/yyyy"
})

$("#Date6").datepicker({
    autoclose:true,
    orientation: "bottom",
    format: "yyyy/M/dd"
})
&#13;
<link href="//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.5/css/bootstrap.css" rel="stylesheet"/>
<link href="//cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.6.1/css/bootstrap-datepicker3.css" rel="stylesheet"/>

<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.2/js/bootstrap.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.6.1/js/bootstrap-datepicker.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.14.1/moment.min.js"></script>

1) dd-mm-yyyy : <input type="text" id="Date" placeholder="01-12-2016" />
<br><br>

2) yyyy-mm-dd : <input type="text" id="Date2" placeholder="2016-12-01" />
<br><br>
3) yyyy-M-dd : <input type="text" id="Date3" placeholder="2016-Dec-01" />
<br><br>
4) dd-M-yyyy : <input type="text" id="Date4" placeholder="01-Dec-2016" />
<br><br>
5) dd/M/yyyy : <input type="text" id="Date5" placeholder="01/Dec/2016" />
<br><br>
6) yyyy/M/dd : <input type="text" id="Date6" placeholder="2016/Dec/01" />
&#13;
&#13;
&#13;

答案 2 :(得分:0)

似乎没有javascript或php处理就不可能。这真是令人难过,因为这是一个非常普遍的情况。

我的解决方案是使用JQuery UI代替bootstrap-datepicker。我创建了两个字段:

  • 隐藏字段,用于将日期存储在YYYY-MM-DD中,其值在后端处理
  • DatePicker使用的可见字段,但后端不处理它。

在第二个字段中,我使用altFieldaltFormat填充第一个字段:

$(function () {
    $("#theDateUI").datepicker({
            dateFormat: "dd.mm.yy",
            altField: $("#theDate"),
            altFormat: "yy-mm-dd"
    });
});