package communitycommons; import java.util.Calendar; import java.util.Date; import communitycommons.proxies.DatePartSelector; public class DateTime { /** * @author mwe * Berekent aantal jaar sinds een bepaalde datum. Als einddatum == null, het huidige tijdstip wordt gebruikt * Code is gebaseerd op http://stackoverflow.com/questions/1116123/how-do-i-calculate-someones-age-in-java */ public static long yearsBetween(Date birthdate, Date comparedate) { if (birthdate == null) return -1L; Calendar now = Calendar.getInstance(); if (comparedate != null) now.setTime(comparedate); Calendar dob = Calendar.getInstance(); dob.setTime(birthdate); if (dob.after(now)) return -1L; int year1 = now.get(Calendar.YEAR); int year2 = dob.get(Calendar.YEAR); long age = year1 - year2; int month1 = now.get(Calendar.MONTH); int month2 = dob.get(Calendar.MONTH); if (month2 > month1) { age--; } else if (month1 == month2) { int day1 = now.get(Calendar.DAY_OF_MONTH); int day2 = dob.get(Calendar.DAY_OF_MONTH); if (day2 > day1) { age--; } } return age; } public static long dateTimeToLong(Date date) { return date.getTime(); } public static Date longToDateTime(Long value) { return new Date(value); } public static long dateTimeToInteger(Date date, DatePartSelector selectorObj) { Calendar newDate = Calendar.getInstance(); newDate.setTime(date); int value = -1; switch (selectorObj) { case year : value = newDate.get(Calendar.YEAR); break; case month : value = newDate.get(Calendar.MONTH)+1; break; // Return starts at 0 case day : value = newDate.get(Calendar.DAY_OF_MONTH); break; default : break; } return value; } }