首页 > 系统 > Android > 正文

Android编程实现计算两个日期之间天数并打印所有日期的方法

2019-10-22 18:16:52
字体:
来源:转载
供稿:网友

本文实例讲述了Android编程实现计算两个日期之间天数并打印所有日期的方法。分享给大家供大家参考,具体如下:

以下代码是计算两个日期之间的天数,并打印所有日期

注:开始时,增加天数时,一天的毫秒数直接用24*60*60*1000来逐步增加天数,再测试时发现,当两个日期之间的天数超过24天时,打印的日期反而在开始日期之前了,(如打印2016/12/18-2017/1/23,打印的日期反而有2016/12/1),后来发现原因在于24*60*60*1000是一个int值,int值的取值范围在2的31次方:+/- 2147483648,当超过最大数时,就会变成最小数,这样反而导致日期变小,将24*60*60*1000变为long类型的值即可:private long static final long ONE_DAY_MS=24*60*60*1000

/*** 计算两个日期之间的日期* @param startTime* @param endTime*/private void betweenDays(long startTime,long endTime,long mills_select,int code){   Date date_start=new Date(startTime);   Date date_end=new Date(endTime);   //计算日期从开始时间于结束时间的0时计算   Calendar fromCalendar = Calendar.getInstance();   fromCalendar.setTime(date_start);   fromCalendar.set(Calendar.HOUR_OF_DAY, 0);   fromCalendar.set(Calendar.MINUTE, 0);   fromCalendar.set(Calendar.SECOND, 0);   fromCalendar.set(Calendar.MILLISECOND, 0);   Calendar toCalendar = Calendar.getInstance();   toCalendar.setTime(date_end);   toCalendar.set(Calendar.HOUR_OF_DAY, 0);   toCalendar.set(Calendar.MINUTE, 0);   toCalendar.set(Calendar.SECOND, 0);   toCalendar.set(Calendar.MILLISECOND, 0);   int s = (int) ((toCalendar.getTimeInMillis() - fromCalendar.getTimeInMillis())/ (ONE_DAY_MS));   if(s>0){     for(int i = 0;i<=s;i++){       long todayDate = fromCalendar.getTimeInMillis() + i * ONE_DAY_MS;       /**        * yyyy-MM-dd E :2012-09-01        */       Log.i("打印日期",Utils.getCustonFormatTime(todayDate,"yyyy-MM-dd"));     }   }else {//此时在同一天之内       Log.i("打印日期",Utils.getCustonFormatTime(startTime,"yyyy-MM-dd"));   }}

Utils.getCustonFormatTime()方法代码如下:

/*** 格式化传入的时间** @param time   需要格式化的时间* @param formatStr 格式化的格式* @return*/public static String getCustonFormatTime(long time, String formatStr) {    SimpleDateFormat format = new SimpleDateFormat(formatStr);    Date d1 = new Date(time);    return format.format(d1);}

希望本文所述对大家Android程序设计有所帮助。


注:相关教程知识阅读请移步到Android开发频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表