From: <pat...@us...> - 2009-10-17 00:25:42
|
Revision: 967 http://cishell.svn.sourceforge.net/cishell/?rev=967&view=rev Author: pataphil Date: 2009-10-17 00:25:32 +0000 (Sat, 17 Oct 2009) Log Message: ----------- DateUtilities.parseDate now supports month-day or day-month formatted dates, as well as an arbitrary date format string. 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-16 19:38:51 UTC (rev 966) +++ trunk/core/org.cishell.utilities/src/org/cishell/utilities/DateUtilities.java 2009-10-17 00:25:32 UTC (rev 967) @@ -10,6 +10,11 @@ // TODO: Fix this class. public class DateUtilities { + public static final String MONTH_DAY_DATE_FORMAT = + "Month-Then-Day Date Format"; + public static final String DAY_MONTH_DATE_FORMAT = + "Day-Then-Month Date Format"; + public final static double AVERAGE_MILLIS_PER_MONTH = (365.24 * 24 * 60 * 60 * 1000 / 12); @@ -170,7 +175,30 @@ } //TODO: These should be sorted so the first format checked is the most likely format, etc... - private static final DateFormat[] ACCEPTED_DATE_FORMATS = { + private static final DateFormat[] MONTH_DAY_DATE_FORMATS = { + new SimpleDateFormat("MM-d-yy"), + new SimpleDateFormat("MM-d-yyyy"), + new SimpleDateFormat("MM-dd-yy"), + new SimpleDateFormat("MM-dd-yyyy"), + new SimpleDateFormat("MM/d/yy"), + new SimpleDateFormat("MM/dd/yy"), + new SimpleDateFormat("MM/d/yyyy"), + new SimpleDateFormat("MMM/dd/yyyy"), + new SimpleDateFormat("MMM-d-yy"), + new SimpleDateFormat("MMM-d-yyyy"), + new SimpleDateFormat("MMM-dd-yy"), + new SimpleDateFormat("MMM-dd-yyyy"), + new SimpleDateFormat("MMM/d/yy"), + new SimpleDateFormat("MMM/dd/yy"), + new SimpleDateFormat("MMM/d/yyyy"), + new SimpleDateFormat("MMM/dd/yyyy"), + new SimpleDateFormat("yyyy"), + DateFormat.getDateInstance(DateFormat.SHORT), + DateFormat.getDateInstance(DateFormat.MEDIUM), + DateFormat.getDateInstance(DateFormat.LONG), + }; + + private static final DateFormat[] DAY_MONTH_DATE_FORMATS = { DateFormat.getDateInstance(DateFormat.FULL), new SimpleDateFormat("d-MM-yy"), new SimpleDateFormat("d-MM-yyyy"), @@ -194,11 +222,29 @@ DateFormat.getDateInstance(DateFormat.LONG), }; - public static Date parseDate(String dateString) + public static Date parseDate(String dateString, String suggestedDateFormat) throws ParseException { - for (int ii = 0; ii < ACCEPTED_DATE_FORMATS.length; ii++) { + /*System.err.println("suggestedDateFormat: " + suggestedDateFormat); + System.err.println("MONTH_DAY_DATE_FORMAT: " + MONTH_DAY_DATE_FORMAT); + System.err.println("DAY_MONTH_DATE_FORMAT: " + DAY_MONTH_DATE_FORMAT);*/ + if (MONTH_DAY_DATE_FORMAT.equals(suggestedDateFormat)) { + return parseDate(dateString, MONTH_DAY_DATE_FORMATS); + } else if (DAY_MONTH_DATE_FORMAT.equals(suggestedDateFormat)) { + return parseDate(dateString, DAY_MONTH_DATE_FORMATS); + } else { + DateFormat[] dateFormats = new DateFormat[] { + new SimpleDateFormat(suggestedDateFormat) + }; + + return parseDate(dateString, dateFormats); + } + } + + public static Date parseDate(String dateString, DateFormat[] dateFormats) + throws ParseException { + for (int ii = 0; ii < dateFormats.length; ii++) { try { - DateFormat format = ACCEPTED_DATE_FORMATS[ii]; + DateFormat format = dateFormats[ii]; format.setLenient(false); Date date = format.parse(dateString); @@ -221,7 +267,12 @@ } public static Date interpretObjectAsDate(Object object) - throws ParseException{ + throws ParseException { + return interpretObjectAsDate(object, ""); + } + + public static Date interpretObjectAsDate(Object object, String dateFormat) + throws ParseException { final String EMPTY_DATE_MESSAGE = "An empty date was found."; String objectAsString = object.toString(); @@ -303,12 +354,12 @@ } } - return parseDate(objectAsString); + return parseDate(objectAsString, dateFormat); } // private java.util.Date parseDate(String dateString) // throws AlgorithmExecutionException { -// for (DateFormat format : ACCEPTED_DATE_FORMATS) { +// for (DateFormat format : MONTH_DAY_DATE_FORMATS) { // try { // format.setLenient(false); // java.util.Date date = format.parse(dateString); @@ -333,4 +384,15 @@ // " 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(); + fixedDate.setYear(date.getYear() + 1900); + + return fixedDate; + } else { + return date; + } + } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <pat...@us...> - 2009-10-17 20:09:37
|
Revision: 969 http://cishell.svn.sourceforge.net/cishell/?rev=969&view=rev Author: pataphil Date: 2009-10-17 20:09:31 +0000 (Sat, 17 Oct 2009) Log Message: ----------- * Added version of DateUtilities.parseDate that uses a default suggestedDateFormat (MONTH_DAY_YEAR_DATE_FORMAT) to make edu.iu.scipolicy.converter.nsf.csv_to_db happy. * Also renamed date format arrays to include YEAR_ in their names. * Removed some commented-out System.err.println calls. 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-17 19:59:58 UTC (rev 968) +++ trunk/core/org.cishell.utilities/src/org/cishell/utilities/DateUtilities.java 2009-10-17 20:09:31 UTC (rev 969) @@ -175,7 +175,7 @@ } //TODO: These should be sorted so the first format checked is the most likely format, etc... - private static final DateFormat[] MONTH_DAY_DATE_FORMATS = { + private static final DateFormat[] MONTH_DAY_YEAR_DATE_FORMATS = { new SimpleDateFormat("MM-d-yy"), new SimpleDateFormat("MM-d-yyyy"), new SimpleDateFormat("MM-dd-yy"), @@ -198,7 +198,7 @@ DateFormat.getDateInstance(DateFormat.LONG), }; - private static final DateFormat[] DAY_MONTH_DATE_FORMATS = { + private static final DateFormat[] DAY_MONTH_YEAR_DATE_FORMATS = { DateFormat.getDateInstance(DateFormat.FULL), new SimpleDateFormat("d-MM-yy"), new SimpleDateFormat("d-MM-yyyy"), @@ -222,15 +222,16 @@ DateFormat.getDateInstance(DateFormat.LONG), }; + public static Date parseDate(String dateString) throws ParseException { + return (parseDate(dateString, MONTH_DAY_YEAR_DATE_FORMATS)); + } + public static Date parseDate(String dateString, String suggestedDateFormat) throws ParseException { - /*System.err.println("suggestedDateFormat: " + suggestedDateFormat); - System.err.println("MONTH_DAY_YEAR_DATE_FORMAT: " + MONTH_DAY_YEAR_DATE_FORMAT); - System.err.println("DAY_MONTH_YEAR_DATE_FORMAT: " + DAY_MONTH_YEAR_DATE_FORMAT);*/ if (MONTH_DAY_YEAR_DATE_FORMAT.equals(suggestedDateFormat)) { - return parseDate(dateString, MONTH_DAY_DATE_FORMATS); + return parseDate(dateString, MONTH_DAY_YEAR_DATE_FORMATS); } else if (DAY_MONTH_YEAR_DATE_FORMAT.equals(suggestedDateFormat)) { - return parseDate(dateString, DAY_MONTH_DATE_FORMATS); + return parseDate(dateString, DAY_MONTH_YEAR_DATE_FORMATS); } else { DateFormat[] dateFormats = new DateFormat[] { new SimpleDateFormat(suggestedDateFormat) @@ -359,7 +360,7 @@ // private java.util.Date parseDate(String dateString) // throws AlgorithmExecutionException { -// for (DateFormat format : MONTH_DAY_DATE_FORMATS) { +// for (DateFormat format : MONTH_DAY_YEAR_DATE_FORMATS) { // try { // format.setLenient(false); // java.util.Date date = format.parse(dateString); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <pat...@us...> - 2009-10-17 20:33:33
|
Revision: 968 http://cishell.svn.sourceforge.net/cishell/?rev=968&view=rev Author: pataphil Date: 2009-10-17 19:59:58 +0000 (Sat, 17 Oct 2009) Log Message: ----------- Changed contents of DateUtilities.MONTH_DAY_YEAR_DATE_FORMAT and DateUtilities.DAY_MONTH_YEAR_DATE_FORMAT to reflect Katy's requests. 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-17 00:25:32 UTC (rev 967) +++ trunk/core/org.cishell.utilities/src/org/cishell/utilities/DateUtilities.java 2009-10-17 19:59:58 UTC (rev 968) @@ -10,10 +10,10 @@ // TODO: Fix this class. public class DateUtilities { - public static final String MONTH_DAY_DATE_FORMAT = - "Month-Then-Day Date Format"; - public static final String DAY_MONTH_DATE_FORMAT = - "Day-Then-Month Date Format"; + public static final String MONTH_DAY_YEAR_DATE_FORMAT = + "Month-Day-Year Date Format"; + public static final String DAY_MONTH_YEAR_DATE_FORMAT = + "Day-Month-Year Date Format"; public final static double AVERAGE_MILLIS_PER_MONTH = (365.24 * 24 * 60 * 60 * 1000 / 12); @@ -225,11 +225,11 @@ public static Date parseDate(String dateString, String suggestedDateFormat) throws ParseException { /*System.err.println("suggestedDateFormat: " + suggestedDateFormat); - System.err.println("MONTH_DAY_DATE_FORMAT: " + MONTH_DAY_DATE_FORMAT); - System.err.println("DAY_MONTH_DATE_FORMAT: " + DAY_MONTH_DATE_FORMAT);*/ - if (MONTH_DAY_DATE_FORMAT.equals(suggestedDateFormat)) { + System.err.println("MONTH_DAY_YEAR_DATE_FORMAT: " + MONTH_DAY_YEAR_DATE_FORMAT); + System.err.println("DAY_MONTH_YEAR_DATE_FORMAT: " + DAY_MONTH_YEAR_DATE_FORMAT);*/ + if (MONTH_DAY_YEAR_DATE_FORMAT.equals(suggestedDateFormat)) { return parseDate(dateString, MONTH_DAY_DATE_FORMATS); - } else if (DAY_MONTH_DATE_FORMAT.equals(suggestedDateFormat)) { + } else if (DAY_MONTH_YEAR_DATE_FORMAT.equals(suggestedDateFormat)) { return parseDate(dateString, DAY_MONTH_DATE_FORMATS); } else { DateFormat[] dateFormats = new DateFormat[] { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
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. |