我使用的UI DatePicker从jQuery UI作为独立的选择器。我有这样的代码:

<div id="datepicker"></div>

和下面的JS:

$('#datepicker').datepicker();

当我尝试用下面的代码返回值时:

var date = $('#datepicker').datepicker('getDate');

我得到的答复是:

Tue Aug 25 2009 00:00:00 GMT+0100 (BST)

这是完全错误的格式。有没有办法让它以DD-MM-YYYY格式返回?


当前回答

datepicker的getDate方法返回一个日期类型,而不是字符串。

您需要使用日期格式将返回值格式化为字符串。 使用datepicker的formatDate函数:

var dateTypeVar = $('#datepicker').datepicker('getDate');
$.datepicker.formatDate('dd-mm-yy', dateTypeVar);

格式说明符的完整列表可以在这里找到。

其他回答

如果你在input[type="text"]元素上设置了datepicker,你可能不会得到一个格式一致的日期,特别是当用户不遵循日期格式进行数据输入时。

例如,设置dateFormat为dd-mm-yy,用户输入1-1-1。datepicker将在内部将此转换为2001年1月1日,但在datepicker对象上调用val()将返回字符串“1-1-1”——与文本字段中的内容完全相同。

这意味着您应该验证用户输入以确保输入的日期是您期望的格式,或者不允许用户以自由格式输入日期(更倾向于使用日历选择器)。即使这样,也可以强制datepicker代码给你一个你期望的格式的字符串:

var picker = $('#datepicker');

picker.datepicker({ dateFormat: 'dd-mm-yy' });

picker.val( '1-1-1' );  // simulate user input

alert( picker.val() );  // "1-1-1"

var d = picker.datepicker( 'getDate' );
var f = picker.datepicker( 'option', 'dateFormat' );
var v = $.datepicker.formatDate( f, d );

alert( v );             // "01-01-2001"

但是请注意,虽然datepicker的getDate()方法将返回日期,但对于不完全匹配日期格式的用户输入,它只能做这么多。这意味着在没有验证的情况下,有可能得到与用户预期不同的日期。购者自慎。

这里有一个特定的代码:

var date = $('#datepicker').datepicker({ dateFormat: 'dd-mm-yy' }).val();

更多信息可在这里:

http://api.jqueryui.com/datepicker/#option-dateFormat http://api.jqueryui.com/datepicker/#utility-formatDate

这对我来说很管用:

$.fn.datepicker.defaults.format = 'yy-mm-dd'

你可以这样添加并尝试:

HTML文件:

<p><input type="text" id="demoDatepicker" /></p>

JavaScript文件:

$(function() {  
    $("#demoDatepicker").datepicker({
        dateFormat: 'dd/mm/yy',
        changeMonth: true,
        changeYear: true,
        constrainInput: false
    });
});

我的选择如下:

$(document).ready(function () { var userLang = navigator.language || navigator.userLanguage; var options = $.extend({}, $.datepicker.regional["ja"], { dateFormat: "yy/mm/dd", changeMonth: true, changeYear: true, highlightWeek: true } ); $("#japaneseCalendar").datepicker(options); }); #ui-datepicker-div { font-size: 14px; } <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/themes/smoothness/jquery-ui.min.css"> <script src="https://code.jquery.com/jquery-3.2.1.min.js"></script> <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.11.1/i18n/jquery-ui-i18n.min.js"></script> </head> <body> <h3>Japanese JQuery UI Datepicker</h3> <input type="text" id="japaneseCalendar"/> </body> </html>