使用英国日期标准dd/mm/yyyy计算两个日期之间的差异



我需要你的帮助。

如何使用dd/mm/yyyy的日期格式比较两个日期并找出日期差异?(英国日期标准)

Ie.1

var date1 = "26/11/2013"
var date2 = "29/11/2013"
if (date1 < date2) { difference is -3 }

Ie.2

var date1 = "26/11/2013"
var date2 = "22/11/2013"
if (date1 > date2) { difference is +4 }

Ie3

var date1 = "26/11/2013"
var date2 = "26/11/2013"
if (date1 > date2) { difference is 0 }

使用日期对象:

var date1 = '26/11/2013'.split('/');
var date2 = '29/11/2013'.split('/');
var start = new Date(date1[2], +date1[1]-1, date1[0]);
var end = new Date(date2[2], +date2[1]-1, date2[0]);
alert((start.getTime() - end.getTime()) / (1000*60*60*24));

你可能想添加一些错误检查,但你得到了

的想法
  1. 将日期拆分为年月日
  2. 创建新日期

然后使用这样的代码。(Java)

public String get_duration_from_date(Date date1, Date date2) {
    TimeUnit timeUnit = TimeUnit.SECONDS;
    long diffInMillies = date2.getTime() - date1.getTime();
    long s = timeUnit.convert(diffInMillies,TimeUnit.MILLISECONDS);

    long days = s / (24*60*60);
    long rest = s - (days*24*60*60);
    long std =  rest / (60*60);
    long rest1 = rest - (std*60*60);
    long min = rest1 / 60;      
    long sec = s % 60;

    String dates ="";
    if (days > 0)
      dates +=  int_to_str((int)days) + " " + grs(R.string.days) + " ";
    dates +=  fill2((int)std) + "h ";
    dates +=  fill2((int)min) + "m ";
    dates +=  fill2((int)sec) + "s ";
    return dates;
}

如果你真的想坚持这种格式,你可以设置一个新的日期,比如这个

var date1 = "21/11/2013"
 , date1Obj = new Date(date1.split('/').reverse());

然后,像Andreas提到的那样使用moment.js,或者自己比较的日期

var date1 = "21/11/2013"
 , date2 = "29/11/2013"
 , d1 = new Date(date1.split('/').reverse())
 , d2 = new Date(date2.split('/').reverse());
if (d1 < d2){ console.log((d1.getTime()-d2.getTime())/86400000 + ' days') }

最新更新