JAVA基础------实现日期差值的计算
来源:互联网 发布:kylie jenner 知乎 编辑:程序博客网 时间:2024/06/01 08:10
自己写了一个计算日期差值的小功能
考虑到闰年及非闰年
传入格式为”YYYY-MM-DD”或”YYYY-M-D”的字符串即可,没有实现对传入参数非日期格式或数据的检查。
date1参数为当前时间
date2参数为设定时间
class cDate { public String calculatingDateDifference(String date1, String date2) { // date1 当前时间 date2 设定时间 String[] a = date1.split("-"); String[] b = date2.split("-"); int month1 = Integer.parseInt(a[1].trim()); int month2 = Integer.parseInt(b[1].trim()); int dofm1 = Integer.parseInt(a[2].trim()); // day of month int dofm2 = Integer.parseInt(b[2].trim()); int year1 = Integer.parseInt(a[0]); int year2 = Integer.parseInt(b[0]); int day1 = calculatingDays(year1, month1, dofm1); // day of year int day2 = calculatingDays(year2, month2, dofm2); System.out.println("date1:"+ date1 +" month1:" + month1 + " dofm1:" + dofm1 + " year1:" + year1 + " day1:" + day1); System.out.println("date2:"+ date2 +" month2:" + month2 + " dofm2:" + dofm2 + " year2:" + year2 + " day2:" + day2); if (year1 != year2) //不同年 { if (year1 > year2) { if (month1 == month2 && dofm1 == dofm2) { return year1 - year2 + "年前的今天"; } else { int timeDistance = 0; for (int i = year2; i < year1; i++) { if (i % 4 == 0 && i % 100 != 0 || i % 400 == 0) //闰年 { timeDistance += 366; } else //不是闰年 { timeDistance += 365; } } return "距今已过去" + (timeDistance + (day1 - day2)) + "天"; // 把年累加到相同(计算一年天数*年数) + 一年中两天的差值 } } else if (year2 > year1) { int timeDistance = 0; for (int i = year1; i < year2; i++) { if (i % 4 == 0 && i % 100 != 0 || i % 400 == 0) //闰年 { timeDistance += 366; } else { // 不是闰年 timeDistance += 365; } } if (month1 == month2 && dofm1 == dofm2) { return year2 - year1 + "年后的今天,还有" + (timeDistance + day2 - day1) + "天"; } return "距离设定时间还有" + (timeDistance + day2 - day1) + "天"; } } else { //同一年 if (day1 > day2) { return "已经过去" + (day1 - day2) + "天"; } else if (day1 == day2) { return "就是今天"; } else { return "还有" + (day2 - day1) + "天"; } } return "我已经被判断日期绕晕了"; } public int calculatingDays(int y, int m, int d) { // 返回day of year m = m-1; int dayOfYear = 0; switch (m) { // 利用case选择 累加 case 11: dayOfYear = dayOfYear + 30; case 10: dayOfYear += 31; case 9: dayOfYear += 30; case 8: dayOfYear += 31; case 7: dayOfYear += 31; case 6: dayOfYear += 30; case 5: dayOfYear += 31; case 4: dayOfYear += 30; case 3: dayOfYear += 31; case 2: if (y % 4 == 0 && y % 100 != 0 || y % 400 == 0) //闰年 { dayOfYear += 29; } else { // 不是闰年 dayOfYear += 28; } case 1: dayOfYear += 31; case 0: dayOfYear += 0; } return dayOfYear + d; }}public class Test { public static void main(String[]agrs) { cDate cdate = new cDate(); System.out.println(cdate.calculatingDateDifference("2017-12-1", "2018-1-1")); // 填入测试数据 System.out.println("HelloWorld!"); }}
若发现代码有错误的地方或是有更好实现方法的,欢迎讨论及分享,谢谢。
阅读全文
0 0
- JAVA基础------实现日期差值的计算
- js实现日期差值计算
- 怎么计算两个日期之间的差值
- iOS 计算两个日期字符串的差值
- SAP HANA计算两个日期的差值
- C#计算日期之间的差值
- 计算日期差值
- php计算日期差值
- datetime计算日期差值
- 计算日期天数差值
- java实现的日期计算
- 求java两个日期的差值
- java中获取日期的差值
- oracle中计算两个日期之间的差值
- 【上机笔试之五】计算两个日期的差值
- Excel 技巧百例:计算两个日期的差值
- Extjs日期控件选择计算日期差值
- 计算时间的差值
- 阿里巴巴前架构师360度无死角剖析微服务
- XML可扩展标记语言概述
- OpenCV学习笔记(10):人脸检测
- 基于Opencv3的活动轮廓模型--CV, RSF and DRLSE
- 联想IT监控携手Riverbed打造数字化转型之路
- JAVA基础------实现日期差值的计算
- 中计播客 | 为防止员工加班,无人机都用上了!
- Essential Qt 第十七章 贪吃蛇(上)
- CAST智能分析平台 做软件中的X光透视仪
- windows下tensorflow两种加载模型的测试数据方法
- 利用Easy UI生成异步树以及动态添加标签页
- tensorflow版本的一些区别
- Android多线程AsyncTask入门讲解
- Retroit+rxjava2.0+mvp封装