android编写万年历程序,Android编程实现计算两个日期之间天数并打印所有日期的方法...

本文实例讲述了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);

}

PS:这里再为大家推荐几款关于日期与时间计算的在线工具供大家参考使用:

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

总结

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

小编个人微信号 jb51ccc

喜欢与人分享编程技术与工作经验,欢迎加入编程之家官方交流群!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值