Android 两个日期之间的差异天数
我的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
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?无法理解您想说什么,请明确询问您的长差异在到日期之间只有毫秒。但不是现在。我的代码也是这样做的,但是结果不正确。你能试试我的代码,看看它是否工作正常吗?