Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.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
如何在android中计算两个日期之间的差异_Android_Date - Fatal编程技术网

如何在android中计算两个日期之间的差异

如何在android中计算两个日期之间的差异,android,date,Android,Date,我有android应用程序,我需要显示两个日期之间的差异,但在这种情况下我有一个问题 例如: 试图显示2016年12月28日和2017年1月1日之间的差异时 结果是339天,我如何解决这个问题,当我尝试显示时,我得到了一个正确的结果。这是我的代码: public void Cal() { java.text.SimpleDateFormat simpleDateFormat =new java.text.SimpleDateFormat("yyyy/mm/dd hh:mm:ss")

我有android应用程序,我需要显示两个日期之间的差异,但在这种情况下我有一个问题

例如: 试图显示2016年12月28日和2017年1月1日之间的差异时

结果是339天,我如何解决这个问题,当我尝试显示时,我得到了一个正确的结果。这是我的代码:

  public void Cal() {

    java.text.SimpleDateFormat simpleDateFormat =new java.text.SimpleDateFormat("yyyy/mm/dd hh:mm:ss");

    try {
        Date date2 = simpleDateFormat.parse("2017/01/01"+ " " + "11:30:00");//end_date
        Date date1 = simpleDateFormat.parse("2016/12/28"+ " " + "11:30:00");//start_date
        printDifference(date1, date2);

    } catch (ParseException e) {
        e.printStackTrace();
    }

}

public void printDifference(Date startDate, Date endDate) {

    long different = endDate.getTime() - startDate.getTime();

    System.out.println("startDate : " + startDate);
    System.out.println("endDate : "+ endDate);
    System.out.println("different : " + different);

    long secondsInMilli = 1000;
    long minutesInMilli = secondsInMilli * 60;
    long hoursInMilli = minutesInMilli * 60;
    long daysInMilli = hoursInMilli * 24;

    long elapsedDays = different / daysInMilli;
    different = different % daysInMilli;

    long elapsedHours = different / hoursInMilli;
    different = different % hoursInMilli;

    long elapsedMinutes = different / minutesInMilli;
    different = different % minutesInMilli;

    long elapsedSeconds = different / secondsInMilli;

    System.out.printf(
            "%d days, %d hours, %d minutes, %d seconds%n",
            elapsedDays,
            elapsedHours, elapsedMinutes, elapsedSeconds);

}

构造
simpleDataFormat
时使用的模式有问题。您使用的是:

yyyy/mm/dd hh:mm:ss
yyyy/MM/dd hh:mm:ss
但你应该用这个:

yyyy/mm/dd hh:mm:ss
yyyy/MM/dd hh:mm:ss

从文档中可以看出,小写的
m
表示一小时内的分钟数,这对于格式字符串的时间戳部分是合适的,而大写的
m
表示一年中的月数。

构建
SimpleDataFormat
时使用的模式有问题。您使用的是:

yyyy/mm/dd hh:mm:ss
yyyy/MM/dd hh:mm:ss
但你应该用这个:

yyyy/mm/dd hh:mm:ss
yyyy/MM/dd hh:mm:ss

从文档中,小写的
m
表示一小时内的分钟数,这对于格式字符串的时间戳部分是合适的,而大写的
m
表示一年中的月数。

Downvoter:请留下反馈。除此之外,他的其他代码看起来很好,谢谢你,非常非常非常感谢。下面的投票者:请留下反馈。除此之外,他的其他代码看起来很好,谢谢,谢谢