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应用程序中有一个日期选择器。 我想获得所选日期和今天日期之间的差异天数 我的结果是: E/-->: DatePicker: 1448798400691 // 29.11.2015 E/-->: NOW: 1448920633692 E/-->: DIFF: -1 E/-->: DatePicker: 1448884800191 // 30.11.2015 E/-->: NOW: 1448920637192 E/-->: DIFF: 0

我的android应用程序中有一个日期选择器。 我想获得所选日期和今天日期之间的差异天数

我的结果是:

E/-->: DatePicker: 1448798400691   // 29.11.2015
E/-->: NOW: 1448920633692
E/-->: DIFF: -1
E/-->: DatePicker: 1448884800191   // 30.11.2015
E/-->: NOW: 1448920637192
E/-->: DIFF: 0
E/-->: DatePicker: 1448971200451   // 01.12.2015
E/-->: NOW: 1448920644463
E/-->: DIFF: 0

您可以使用此方法获取两个日期之间的差异

  public static int getDateDifference(long startDate, long endDate) {

    //milliseconds
    long different = endDate - startDate;

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

    long elapsedDays = different / daysInMilli;
    return (int) elapsedDays;
}

您可以按如下方式计算差异。要获取日期,请使用以下代码

//从时间选择器获取日期

Calendar calendar = Calendar.getInstance();
calendar.set(datePicker.getYear(), datePicker.getMonth(), datePicker.getDayOfMonth(), 0, 0, 0);        //use object of Datepicker widget

long diff = calendar.getTimeInMillis() - System.currentTimeMillis();       //calculate difference
long seconds = TimeUnit.MILLISECONDS.toSeconds(diff);        //here you will have diff in seconds.
long daysdiff = TimeUnit.MILLISECONDS.toDays(diff);          //if you  want diff in days
试试这个

public static long printDifference(Date startDate, Date endDate){

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

    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;

    return elapsedDays;
}

试试这个例子来解决这个问题

    String dateStart = "11/28/2015 09:29:58";
        String dateStop = "11/29/2015 10:31:48";

        //HH converts hour in 24 hours format (0-23), day calculation
        SimpleDateFormat format = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");

        Date d1 = null;
        Date d2 = null;

        try {
            d1 = format.parse(dateStart);
            d2 = format.parse(dateStop);

            //in milliseconds
            long diff = d2.getTime() - d1.getTime();

            long diffSeconds = diff / 1000 % 60;
            long diffMinutes = diff / (60 * 1000) % 60;
            long diffHours = diff / (60 * 60 * 1000) % 24;
            long diffDays = diff / (24 * 60 * 60 * 1000);
   }
  catch(Exception e){}
你应该试试这个

SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy hh:mm:ss");
Date past = format.parse("12/10/2015 18:10:52");
Date now = new Date();
System.out.println(TimeUnit.MILLISECONDS.toSeconds(now.getTime() - past.getTime()) + " seconds ago");
System.out.println(TimeUnit.MILLISECONDS.toMinutes(now.getTime() - past.getTime()) + " minutes ago");
System.out.println(TimeUnit.MILLISECONDS.toHours(now.getTime() - past.getTime()) + " hours ago");
System.out.println(TimeUnit.MILLISECONDS.toDays(now.getTime() - past.getTime()) + " days ago");

您可以以
格式传递所选日期。以给定格式解析(“”

您还应该将当前日期的小时、分钟、秒和毫秒部分设置为0。此外,闰秒将导致此代码出现问题。使用
long dtMili=System.currentTimemilis()
要获取当前时间,我还设置了house,minute,second-days=0:/i使用System进行了尝试。currentTimeMillis-days=0:/n您可以保留任何秒的阈值,如果不使用实时,通常为5到10秒。我在该代码中获取的日期差异在哪里?只有以秒为单位的差异oO?无法理解您想说什么,请明确询问您的长差异在到日期之间只有毫秒。但不是现在。我的代码也是这样做的,但是结果不正确。你能试试我的代码,看看它是否工作正常吗?