Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/441.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用moment和langs比较JavaScript中的日期_Javascript_Date_Momentjs_Date Comparison - Fatal编程技术网

使用moment和langs比较JavaScript中的日期

使用moment和langs比较JavaScript中的日期,javascript,date,momentjs,date-comparison,Javascript,Date,Momentjs,Date Comparison,我有两个约会,即newdate和haha。newdate将是今天的日期(当前日期),haha日期可以是任何日期。以下代码不适用于我,因为我已经提供了 新日期:2014年2月7日10:04 哈哈:2014年2月3日00:00 它总是出现在其他部分 sdate:2014年2月3日 时间:00:00 var haha=sdate+" "+stime; var newdate=new Date(); var date_str = moment(newdate)

我有两个约会,即newdate和haha。newdate将是今天的日期(当前日期),haha日期可以是任何日期。以下代码不适用于我,因为我已经提供了
新日期:2014年2月7日10:04
哈哈:2014年2月3日00:00
它总是出现在其他部分
sdate:2014年2月3日
时间:00:00

var haha=sdate+" "+stime;
    var newdate=new Date();
                  var date_str = moment(newdate).format("DD-MMM-YYYY HH:mm");
                alert(date_str);
                  if (Date.parse(haha) < Date.parse(date_str)) {

                  alert("Start date cannot be less than today's date");

                  return false;

                  }
                  else {

                      alert("hahahhahaha");
                  }
var haha=sdate+“”+stime;
var newdate=新日期();
var date_str=时刻(newdate).format(“DD-MMM-YYYY HH:mm”);
警报(日期);
如果(Date.parse(哈哈)

注意我正在使用langs javscript的瞬间

您的代码可以正常工作。Stime格式错误从第一组00前面删除冒号。时间是00:00。你是如何产生刺激的?这是你问题的原因

你可以看到我的测试

var sdate=“2014年2月3日”;
var stime=“00:00”;
var haha=sdate+“”+stime;
var newdate=新日期();
if(navigator.appName.indexOf(“Internet Explorer”)!=-1){
警报(“isIE”);
var dateObject=(parseISO8601(哈哈));
var hahaDate=新日期(dateObject.year、dateObject.month、dateObject.day、dateObject.hour、dateObject.min);
警惕(哈达特);
if(hahaadate.getTime()
[编辑:好的,对不起,我弄乱了冒号,如果它在else失败,你确定你的单元测试包含了足够的场景,如果日期大于或小于当前日期,如果它仅小于你的示例,你将永远不会在else中找到代码。代码仍然有效,不知道该说什么:-(,两种情况下的更新示例]


[编辑:这是一个不完整的例子,你必须记住javascript不是通用的。当你问一个关于JS的问题时,假设我们都使用Chrome或FF,或者至少发布浏览器你累了。我提供了一个简单的例子来说明如何实现这一点。坦率地说,我不喜欢外部框架,因为我可以自己做,所以你可以看到我没有使用它。请随意做你想做的事情。问题的原因是IE解析日期时间的方式,你必须使用下面提供的更通用的格式。可能的格式示例:.anyhow GL]

这有点复杂,请考虑:

var newdate = new Date();
var date_str = moment(newdate).format("DD-MMM-YYYY HH:mm");
Date.parse(date_str);
如果上述方法有效(并且不能保证Date.parse在所有使用的浏览器中都能正确解析字符串),那么所有这些都相当于:

var newdate = new Date();
newdate.setSeconds(0, 0);
您最好手动解析haha(或者使用moment.js,因为您已经有了它)并比较结果日期对象

考虑:

// s is dd-mmm-yyyy hh:mm
function stringToDate(s) {
  s = s.split(/[- :]/);
  var months = {'jan':0, 'feb':1, 'mar':2, 'apr':3, 'may':4, 'jun': 5,
                'jul':6, 'aug':7, 'sep':8, 'oct':9, 'nov':10, 'dec':11};
  return new Date(s[2], months[s[1].toLowerCase()], s[0], s[3], s[4], 0, 0);
}

var newdate = '07-Feb-2014 10:04';
var haha    = '03-Feb-2014 00:00';

alert(stringToDate(newdate).getTime() == stringToDate(haha).getTime()); // false

// Set to same time
var newdate = '03-Feb-2014 00:00';

alert(stringToDate(newdate).getTime() == stringToDate(haha).getTime()); // true

哈哈在哪里开始?@BelgianMyWaffle检查我没有先添加时间,看看结果是什么。@BelgianMyWaffle不工作您也没有添加空字符串吗“”?sdate是在哪里定义的?它是正确的,只是我刚刚添加了第一个冒号用于描述。实际上,时间是00:00@user2841408sdate和STIM是如何生成的?其余的逻辑似乎可以工作?你能添加更多的代码或打印结果吗?它在chrome中工作,但我使用的是ie8,它在chrome中不工作it@user2841408是的日期不同您需要编写if IE方法并仅为IE执行日期。@user2841408我更新我的答案以减缓您遇到的问题它是特定于浏览器的日期时间格式。
// s is dd-mmm-yyyy hh:mm
function stringToDate(s) {
  s = s.split(/[- :]/);
  var months = {'jan':0, 'feb':1, 'mar':2, 'apr':3, 'may':4, 'jun': 5,
                'jul':6, 'aug':7, 'sep':8, 'oct':9, 'nov':10, 'dec':11};
  return new Date(s[2], months[s[1].toLowerCase()], s[0], s[3], s[4], 0, 0);
}

var newdate = '07-Feb-2014 10:04';
var haha    = '03-Feb-2014 00:00';

alert(stringToDate(newdate).getTime() == stringToDate(haha).getTime()); // false

// Set to same time
var newdate = '03-Feb-2014 00:00';

alert(stringToDate(newdate).getTime() == stringToDate(haha).getTime()); // true