From: <pat...@us...> - 2009-10-20 17:37:11
|
Revision: 972 http://cishell.svn.sourceforge.net/cishell/?rev=972&view=rev Author: pataphil Date: 2009-10-20 17:37:04 +0000 (Tue, 20 Oct 2009) Log Message: ----------- DateUtilities.parseDate now has flavors where the year can be "fixed". (Java's built-in Date class subtracts 1900 from the year by default; parseDate optionally "fixes" the year by adding 1900 back to it.) Modified Paths: -------------- trunk/core/org.cishell.utilities/src/org/cishell/utilities/DateUtilities.java Modified: trunk/core/org.cishell.utilities/src/org/cishell/utilities/DateUtilities.java =================================================================== --- trunk/core/org.cishell.utilities/src/org/cishell/utilities/DateUtilities.java 2009-10-19 18:50:27 UTC (rev 971) +++ trunk/core/org.cishell.utilities/src/org/cishell/utilities/DateUtilities.java 2009-10-20 17:37:04 UTC (rev 972) @@ -223,33 +223,50 @@ }; public static Date parseDate(String dateString) throws ParseException { + return parseDate(dateString, true); + } + + public static Date parseDate(String dateString, boolean fixYear) + throws ParseException { return (parseDate(dateString, MONTH_DAY_YEAR_DATE_FORMATS)); } public static Date parseDate(String dateString, String suggestedDateFormat) throws ParseException { + return parseDate(dateString, suggestedDateFormat, true); + } + + public static Date parseDate( + String dateString, String suggestedDateFormat, boolean fixYear) + throws ParseException { if (MONTH_DAY_YEAR_DATE_FORMAT.equals(suggestedDateFormat)) { - return parseDate(dateString, MONTH_DAY_YEAR_DATE_FORMATS); + return parseDate(dateString, MONTH_DAY_YEAR_DATE_FORMATS, fixYear); } else if (DAY_MONTH_YEAR_DATE_FORMAT.equals(suggestedDateFormat)) { - return parseDate(dateString, DAY_MONTH_YEAR_DATE_FORMATS); + return parseDate(dateString, DAY_MONTH_YEAR_DATE_FORMATS, fixYear); } else { DateFormat[] dateFormats = new DateFormat[] { new SimpleDateFormat(suggestedDateFormat) }; - return parseDate(dateString, dateFormats); + return parseDate(dateString, dateFormats, fixYear); } } public static Date parseDate(String dateString, DateFormat[] dateFormats) throws ParseException { + return parseDate(dateString, dateFormats, true); + } + + public static Date parseDate( + String dateString, DateFormat[] dateFormats, boolean fixYear) + throws ParseException { for (int ii = 0; ii < dateFormats.length; ii++) { try { DateFormat format = dateFormats[ii]; format.setLenient(false); Date date = format.parse(dateString); - if (date.getYear() < 1900) { + if (fixYear && (date.getYear() < 1900)) { date.setYear(date.getYear() + 1900); } @@ -274,6 +291,12 @@ public static Date interpretObjectAsDate(Object object, String dateFormat) throws ParseException { + return interpretObjectAsDate(object, dateFormat, true); + } + + public static Date interpretObjectAsDate( + Object object, String dateFormat, boolean fixYear) + throws ParseException { final String EMPTY_DATE_MESSAGE = "An empty date was found."; String objectAsString = object.toString(); @@ -355,37 +378,9 @@ } } - return parseDate(objectAsString, dateFormat); + return parseDate(objectAsString, dateFormat, fixYear); } -// private java.util.Date parseDate(String dateString) -// throws AlgorithmExecutionException { -// for (DateFormat format : MONTH_DAY_YEAR_DATE_FORMATS) { -// try { -// format.setLenient(false); -// java.util.Date date = format.parse(dateString); -// //WE PARSED THE DATE SUCCESSFULLY (if we get to this point)! -// //Finish up our processing and return the date. -// -// //TODO: Methinks this is a hack we should eliminate -// if (date.getYear() < 1900) -// date.setYear(date.getYear() + 1900); -// java.sql.Date dateForSQL = new java.sql.Date(date.getTime()); -// return dateForSQL; -// } catch (ParseException e) { -// continue; -// } -// } -// -// //we could not parse the date with any of the accepted formats. -// -// String exceptionMessage = -// "Could not parse the field " + -// "'" + dateString + "'" + -// " as a date. Aborting the algorithm."; -// throw new AlgorithmExecutionException(exceptionMessage); -// } - private static Date fixDateYear(Date date) { if (date.getYear() < 1900) { Date fixedDate = (Date)date.clone(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |