Fixes to parsing of due times

pull/14/head
Sam Bosley 12 years ago
parent 4fc58c8bb7
commit 978a76218c

@ -268,16 +268,19 @@ public class DateUtilities {
return date.getTime();
}
public static boolean isoStringHasTime(String iso8601String) {
return iso8601String.length() > 12;
}
public static Date parseIso8601(String iso8601String) throws ParseException {
String formatString;
if (iso8601String.endsWith("Z")) { //$NON-NLS-1$
// Time exists
if (isoStringHasTime(iso8601String)) { // Time exists
iso8601String = iso8601String.replace("Z", "+00:00"); //$NON-NLS-1$ //$NON-NLS-2$
try {
iso8601String = iso8601String.substring(0, 22) + iso8601String.substring(23);
} catch (IndexOutOfBoundsException e) {
e.printStackTrace();
throw new ParseException("Invalid ISO 8601 length", 0); //$NON-NLS-1$
throw new ParseException("Invalid ISO 8601 length for string " + iso8601String, 0); //$NON-NLS-1$
}
formatString = "yyyy-MM-dd'T'HH:mm:ssZ"; //$NON-NLS-1$
} else {

@ -52,8 +52,7 @@ public class JSONChangeToPropertyVisitor implements PropertyVisitor<Void, String
try {
value = DateUtilities.parseIso8601(valueString).getTime();
if (Task.DUE_DATE.equals(property)) {
boolean hasDueTime = valueString.endsWith("Z");
value = Task.createDueDate(hasDueTime ? Task.URGENCY_SPECIFIC_DAY_TIME : Task.URGENCY_SPECIFIC_DAY, value);
value = Task.createDueDate(DateUtilities.isoStringHasTime(valueString) ? Task.URGENCY_SPECIFIC_DAY_TIME : Task.URGENCY_SPECIFIC_DAY, value);
}
} catch (Exception e){
value = 0;

@ -67,7 +67,7 @@ public class DateUtilitiesTest extends TodorooTestCase {
}
public void testParseISO8601() {
String withTime = "2013-01-28T13:17:02Z";
String withTime = "2013-01-28T13:17:02+00:00";
Date date = new Date();
Calendar cal = Calendar.getInstance();
try {

Loading…
Cancel
Save