Javascript 两个日期如何比较?

Javascript 两个日期如何比较?,javascript,jquery,Javascript,Jquery,我有两个约会,比如从和到。 日期格式,如2013年9月28日和2013年9月01日。 我想比较日期并显示错误消息。 我用过这个密码 var from = $('#<%= txtFDateEdu.ClientID %>').val(); var to = $('#<%= txtTDateEdu.ClientID %>').val(); var dateTypeVar = $('#<%= txtFDateEdu.ClientID %>

我有两个约会,比如从和到。 日期格式,如2013年9月28日和2013年9月01日。 我想比较日期并显示错误消息。 我用过这个密码

     var from = $('#<%= txtFDateEdu.ClientID %>').val();
     var to = $('#<%= txtTDateEdu.ClientID %>').val();

     var dateTypeVar = $('#<%= txtFDateEdu.ClientID %>').datepicker('getDate');
     var dateTypeVarto = $('#<%= txtFDateEdu.ClientID %>').datepicker('getDate');
     $.datepicker.formatDate('dd-mm-yy', dateTypeVar);

     var datefrom = $.datepicker.formatDate('dd/mm/yyyy', dateTypeVar);
     var dateto = $.datepicker.formatDate('dd/mm/yyyy', dateTypeVarto);
         alert(datefrom);    

         if (datefrom > dateto) {
             alert("Success");
          }
         else {

         }
var from=$('#').val();
var to=$('#').val();
var dateTypeVar=$('#')。日期选择器('getDate');
var dateTypeVarto=$('#')。日期选择器('getDate');
$.datepicker.formatDate('dd-mm-yy',dateTypeVar);
var datefrom=$.datepicker.formatDate('dd/mm/yyyy',dateTypeVar);
var dateto=$.datepicker.formatDate('dd/mm/yyyy',dateTypeVarto);
警报(日期从);
如果(datefrom>dateto){
警惕(“成功”);
}
否则{
}
此代码工作不正常。有些问题以日期格式出现。请任何人帮我解决日期格式的问题,并比较正确的日期。 我也使用这个代码

var from = $('#<%= txtFDateEdu.ClientID %>').val();
                var to = $('#<%= txtTDateEdu.ClientID %>').val(;)

                alert(from);
                alert(to);
                var datefrom = new Date(from);
                var dateto = new Date(to);
                alert(datefrom);
                 alert(dateto);
                if (datefrom > dateto) {
                    alwer("Success");
                }
                else {

                }
var from=$('#').val();
var to=$('#')。val(;)
警报(来自);
警惕;
var DATEFORM=新日期(从);
var dateto=新日期(至);
警报(日期从);
警报(日期至);
如果(datefrom>dateto){
alwer(“成功”);
}
否则{
}

但这也不能正常工作。

我也使用日期选择器,通常我使用以下脚本

   function compare_dates(valid_to, valid_from){
  var splited_to = valid_to.split("-")
  var to_date_monthfield=splited_to[1];
  var to_date_dayfield=splited_to[0];
  var to_date_yearfield=splited_to[2];
  var to_date = new Date(to_date_yearfield, to_date_monthfield-1, to_date_dayfield);

  var splited_from = valid_from.split("-");
  var from_date_monthfield=splited_from[1];
  var from_date_dayfield=splited_from[0];
  var from_date_yearfield=splited_from[2];
  var from_date = new Date(from_date_yearfield, from_date_monthfield-1, from_date_dayfield);

  var cur_date = new Date();
  if(!(from_date > cur_date.setDate(cur_date.getDate() - 1))){
    return false;
  }
  if(!(to_date > from_date)){
    return false;
  }
  return true;

}
这要求您的日期采用dd//mm/yyyy格式

我发现有些东西很有用。你可以用我的代码

new Date(Date.parse(month_string +" 1, 2012")).getMonth()+1

您可以用上述代码替换蒙特菲尔德。或者您也可以使用一种方法。

如果要将给定日期转换为字符串,只需跳过此步骤:

 var datefrom = $('#<%= txtFDateEdu.ClientID %>').datepicker('getDate');
 var dateto = $('#<%= txtFDateEdu.ClientID %>').datepicker('getDate');

     if (datefrom > dateto) {
         alert("Success");
      }
     else {

     }
var datefrom=$('#')。日期选择器('getDate');
var dateto=$('#')。日期选择器('getDate');
如果(datefrom>dateto){
警惕(“成功”);
}
否则{
}

在将两个
日期
对象转换为字符串之前,只需比较它们:

var dateTypeVar = $('#<%= txtFDateEdu.ClientID %>').datepicker('getDate');
var dateTypeVarto = $('#<%= txtFDateEdu.ClientID %>').datepicker('getDate');

if (dateTypeVar > dateTypeVarto) {
    ...
}
var dateTypeVar=$('#')。日期选择器('getDate');
var dateTypeVarto=$('#')。日期选择器('getDate');
如果(dateTypeVar>dateTypeVarto){
...
}

比较运算符将通过
.valueOf()
自动获取两个日期对象的值,即自1970/01/01 00:00:00以来经过的毫秒数。

“此代码工作不正常。日期格式中出现了一些问题”请您对问题进行更详细的说明。是的,以日期格式发布。我有一个类似于2013年9月28日的日期格式。我想转换日期,而不是比较。@jitendrakumar:如果您知道原因,应该能够修复它。再努力一点。
datepicker.formatDate
返回一个字符串。您不能将两个字符串比较为
datefrom>dateto
,而期望Javascript知道它们应该是日期。将它们转换为正确的
Date
object您能提供错误输出吗?这本身并不是错误的,但也有点幼稚和冗长。它对同一对象/参数执行多次
拆分
,并且不进行错误检查。还有,为什么不直接将
返回到_date.比较(从_date)
并让调用方决定比较,而不是在函数中对其进行硬编码?我有日期格式,如2013年9月28日。请提供有关此格式的解决方案。我已更改了答案位并添加了两个链接。请检查一下。