
最近遇到了一个问题,如何计算给定两个日期之间隔了多少天,这在平时的项目和面试中也比较常见,总结一发。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
|
import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date;
public class { public static void main(String[] args) throws ParseException {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); Date date1 = format.parse("1999-09-09"); Date date2 = format.parse("2011-11-11");
System.out.println(differentDays(date1, date2)); System.out.println(differentDaysByMillisecond(date1, date2)); System.out.println(differentDaysByCalendar(date1, date2)); }
public static int differentDays(Date date1, Date date2) { Calendar cal1 = Calendar.getInstance(); cal1.setTime(date1);
Calendar cal2 = Calendar.getInstance(); cal2.setTime(date2); int day1 = cal1.get(Calendar.DAY_OF_YEAR); int day2 = cal2.get(Calendar.DAY_OF_YEAR);
int year1 = cal1.get(Calendar.YEAR); int year2 = cal2.get(Calendar.YEAR); if (year1 != year2) { 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; } } return timeDistance + (day2 - day1); } else { System.out.println("判断day2 - day1 : " + (day2 - day1)); return day2 - day1; } }
public static int differentDaysByMillisecond(Date date1, Date date2) { int days = (int) ((date2.getTime() - date1.getTime()) / (1000 * 3600 * 24)); return days; }
public static int differentDaysByCalendar(Date date1, Date date2) throws ParseException { Calendar calendar = Calendar.getInstance(); calendar.setTime(date1); int cnt = 0; while (calendar.getTime().compareTo(date2) != 0) { calendar.add(Calendar.DATE, 1); cnt++; } return cnt; } }
|
近期评论