package org.openstack.atlas.service.domain.pojos; import java.util.Calendar; import java.util.regex.Pattern; import java.util.regex.Matcher; public class DateTimeTools { private static final Pattern YDM_RE = Pattern.compile("^([0-9]+)-([0-9]+)-([0-9]+)\\s*$"); private static final Pattern YDMHM_RE = Pattern.compile("^([0-9]+)-([0-9]+)-([0-9]+)\\s+([0-9]+):([0-9]+)\\s*$"); private static final Pattern YDMHMS_RE = Pattern.compile("^([0-9]+)-([0-9]+)-([0-9]+)\\s+([0-9]+):([0-9]+):([0-9]+)\\s*$"); public static Calendar setCalendarAttrs(Calendar cal,Integer... iParams) { int pLength; pLength = iParams.length; if (pLength > 0 && iParams[0] != null) {cal.set(Calendar.YEAR, iParams[0]);} if (pLength > 1 && iParams[1] != null) {cal.set(Calendar.MONTH, iParams[1]-1);} if (pLength > 2 && iParams[2] != null) {cal.set(Calendar.DAY_OF_MONTH, iParams[2]);} if (pLength > 3 && iParams[3] != null) {cal.set(Calendar.HOUR_OF_DAY, iParams[3]);} if (pLength > 4 && iParams[4] != null) {cal.set(Calendar.MINUTE, iParams[4]);} if (pLength > 5 && iParams[5] != null) {cal.set(Calendar.SECOND, iParams[5]);} cal.set(Calendar.MILLISECOND, 0); return cal; } public static Calendar parseDate(String strIn) throws DateTimeToolException { Calendar cal = Calendar.getInstance(); cal.set(Calendar.YEAR, 0); cal.set(Calendar.MONTH, 0); cal.set(Calendar.DAY_OF_MONTH, 0); cal.set(Calendar.HOUR_OF_DAY, 0); cal.set(Calendar.MINUTE, 0); cal.set(Calendar.SECOND, 0); cal.set(Calendar.MILLISECOND, 0); Matcher ydm_m = YDM_RE.matcher(strIn); Matcher ydmhm_m = YDMHM_RE.matcher(strIn); Matcher ydmhms_m = YDMHMS_RE.matcher(strIn); if (ydm_m.find()) { cal.set(Calendar.YEAR, Integer.parseInt(ydm_m.group(1))); cal.set(Calendar.MONTH, Integer.parseInt(ydm_m.group(2))-1); cal.set(Calendar.DAY_OF_MONTH, Integer.parseInt(ydm_m.group(3))); return cal; } else if (ydmhm_m.find()) { cal.set(Calendar.YEAR, Integer.parseInt(ydmhm_m.group(1))); cal.set(Calendar.MONTH, Integer.parseInt(ydmhm_m.group(2))-1); cal.set(Calendar.DAY_OF_MONTH, Integer.parseInt(ydmhm_m.group(3))); cal.set(Calendar.HOUR_OF_DAY, Integer.parseInt(ydmhm_m.group(4))); cal.set(Calendar.MINUTE, Integer.parseInt(ydmhm_m.group(5))); return cal; } else if (ydmhms_m.find()) { cal.set(Calendar.YEAR, Integer.parseInt(ydmhms_m.group(1))); cal.set(Calendar.MONTH, Integer.parseInt(ydmhms_m.group(2))-1); cal.set(Calendar.DAY_OF_MONTH, Integer.parseInt(ydmhms_m.group(3))); cal.set(Calendar.HOUR_OF_DAY, Integer.parseInt(ydmhms_m.group(4))); cal.set(Calendar.MINUTE, Integer.parseInt(ydmhms_m.group(5))); cal.set(Calendar.SECOND, Integer.parseInt(ydmhms_m.group(6))); return cal; } else { throw new DateTimeToolException("Error parsing String"); } } public static String getDateYDM(Calendar cal) { int year; int month; int day; year = cal.get(Calendar.YEAR); month = cal.get(Calendar.MONTH); day = cal.get(Calendar.DAY_OF_MONTH); return String.format("%d-%d-%d", year, month+1, day); } public static String getDateYDMHM(Calendar cal) { int hour; int min; String out; hour = cal.get(Calendar.HOUR_OF_DAY); min = cal.get(Calendar.MINUTE); out = String.format("%s %d:%d", getDateYDM(cal), hour, min); return out; } public static String getDateYDMHMS(Calendar cal) { int secs; String out; secs = cal.get(Calendar.SECOND); out = String.format("%s:%d", getDateYDMHM(cal), secs); return out; } }