Javascript 如何从文本框中读取日期,使用jQueryUIDatePicker

Javascript 如何从文本框中读取日期,使用jQueryUIDatePicker,javascript,jquery,datepicker,Javascript,Jquery,Datepicker,下面的Jquery UI日期选择器以正确的格式显示日期,但读取错误 HTML: <input type="text" id="date"> <input type="button" id="btn" value="Show"/> $('#date').datepicker({dateFormat: 'dd-mm-yy'}); $('#btn').click(function(){ var _myDate = new Date($('#date').val());

下面的Jquery UI日期选择器以正确的格式显示日期,但读取错误

HTML:

<input type="text" id="date">
<input type="button" id="btn" value="Show"/>
$('#date').datepicker({dateFormat: 'dd-mm-yy'});
$('#btn').click(function(){
  var _myDate = new Date($('#date').val());
  alert(_myDate);
});
怎么了?()

它显示的日期正确,但读错了

当我这样使用它时:

$('#btn').click(function(){
      var _myDate = $('#date').val();
      alert(_myDate);
 });

这没关系,但当使用
C#
作为字符串将其传递到服务器端,然后将其转换为
DateTime
时,如果选择的每
大于
12
,则会出现
无效日期的错误。它将
视为一个月。我所需的日期格式是
dd/mm/yyyy
Change var
\u myDate=new Date($('#Date').val())到var
_myDate=$('#date').val()

更改变量
\u myDate=新日期($(“#Date').val())到var
_myDate=$('#date').val()

像这样试试

$( "#date" ).datepicker({dateFormat: 'mm-dd-yy'});
$('#btn').click(function(){
var _myDate = new Date($('#date').val()  );
alert(_myDate);
});
像这样试试

$( "#date" ).datepicker({dateFormat: 'mm-dd-yy'});
$('#btn').click(function(){
var _myDate = new Date($('#date').val()  );
alert(_myDate);
});

您不需要日期类型声明,只需这样做即可

$( "#date" ).datepicker({dateFormat: 'dd-mm-yy'});
$('#btn').click(function(){
  var _myDate = $('#date').val();
alert(_myDate);
});

Javascript是一种动态类型语言,因此日期初始化是不必要的

您不需要日期类型声明-您只需这样做即可

$( "#date" ).datepicker({dateFormat: 'dd-mm-yy'});
$('#btn').click(function(){
  var _myDate = $('#date').val();
alert(_myDate);
});

Javascript是一种动态类型语言,因此不需要日期初始化

  $('#date').datepicker({dateFormat: 'dd-mm-yy',  changeMonth:true, changeYear:true,showOn: "both",buttonImage: "",buttonImageOnly: false });

console.log($('#date').val());

试试这个:很好

  $('#date').datepicker({dateFormat: 'dd-mm-yy',  changeMonth:true, changeYear:true,showOn: "both",buttonImage: "",buttonImageOnly: false });

console.log($('#date').val());

也许这就是你的答案

$( "#date" ).datepicker({dateFormat: 'mm-dd-yy'});
    $('#btn').click(function(){
    var _myDate = new Date($('#date').val());
    var new_date=_myDate.split('-');
    var month=new_date[0];
    var day=new_date[1];
    var year=new_date[2];
    //you have 3 data, month, day and year.

    alert(month+"/"+day+"/"+year);
    });

您可以使用这3个变量日、月、年来编写程序

也许这就是您的答案

$( "#date" ).datepicker({dateFormat: 'mm-dd-yy'});
    $('#btn').click(function(){
    var _myDate = new Date($('#date').val());
    var new_date=_myDate.split('-');
    var month=new_date[0];
    var day=new_date[1];
    var year=new_date[2];
    //you have 3 data, month, day and year.

    alert(month+"/"+day+"/"+year);
    });

您可以使用这3个变量日、月、年来编写程序

我的javaScript函数

convertDate = function (strDate) {
   var newDate = new Date();
   var oldDate = '';
   if (strDate.contains('/')) {
         oldDate = strDate.split('/');
      } else if (strDate.contains('-')) {
         oldDate = strDate.split('-');
      }
     //OldDate format is dd/mm/yyyy
      newDate.setDate(oldDate[0]);
      newDate.setMonth(oldDate[1] - 1);
      newDate.setYear(oldDate[2]);
      return newDate;
 }

我的javaScript函数

convertDate = function (strDate) {
   var newDate = new Date();
   var oldDate = '';
   if (strDate.contains('/')) {
         oldDate = strDate.split('/');
      } else if (strDate.contains('-')) {
         oldDate = strDate.split('-');
      }
     //OldDate format is dd/mm/yyyy
      newDate.setDate(oldDate[0]);
      newDate.setMonth(oldDate[1] - 1);
      newDate.setYear(oldDate[2]);
      return newDate;
 }

只需使用与最初设置日期选择器相同的格式,使用
parseDate
解析文本框值:

console.log($.datepicker.parseDate("dd-mm-yy", $('#date').val()));

parseDate将返回一个日期对象,因此您无需手动创建它。

只需使用与最初设置日期选择器相同的格式,使用
parseDate
解析文本框值即可:

console.log($.datepicker.parseDate("dd-mm-yy", $('#date').val()));

parseDate将返回一个日期对象,这样您就不需要手动创建它。

在控制台中,它可以正常工作,但在服务器端,它的无效日期大于12,如
13-03-14
。在控制台中,它可以正常工作,但在服务器端,它的无效日期,当day大于12时,如
13-03-14
。你在Shahid的文章中测试过你的建议吗?@Matt是的,我测试过他的原始文章,但没有服务器端部分!我明白了,那是我错过的部分。因此,您建议按原样传递值,并使用c#/.net库转换在服务器上进行转换,对吗?@Matt No!我不这么认为。事实上,我本来打算发布整个解决方案,但我意识到克玛尼已经差不多做到了。因此,我没有这样做。若要将区域性不可知日期值发布到服务器,作者应使用yyyy-mm-dd格式。通过这种方式,服务器端代码可以正常工作。我同意,如果是国际应用程序,还应发送UTC偏移量。所以建议使用ISO日期/时间格式。你在Shahid的文章中测试过你的建议吗?@Matt是的,我测试过他的原始文章,没有服务器端部分!我明白了,那是我错过的部分。因此,您建议按原样传递值,并使用c#/.net库转换在服务器上进行转换,对吗?@Matt No!我不这么认为。事实上,我本来打算发布整个解决方案,但我意识到克玛尼已经差不多做到了。因此,我没有这样做。若要将区域性不可知日期值发布到服务器,作者应使用yyyy-mm-dd格式。通过这种方式,服务器端代码可以正常工作。我同意,如果是国际应用程序,还应发送UTC偏移量。所以建议使用ISO日期/时间格式。欢迎光临,上帝保佑您。别忘了按绿色勾号表示这是正确答案。:)欢迎光临,愿上帝保佑你。别忘了按绿色勾号表示这是正确答案。:)