summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlan Young <consult.awy@gmail.com>2016-04-18 16:30:24 (GMT)
committerAlan Young <consult.awy@gmail.com>2016-04-20 16:28:48 (GMT)
commit0b78451839eebdba59d8ac603067f5c7c7d5284c (patch)
tree35782ab98f1551cc338662f3d13b4e2ae0a9738d
parent9b518dcdd98d694a4464895fce17a3c7a8caf569 (diff)
downloadstroke-0b78451839eebdba59d8ac603067f5c7c7d5284c.zip
stroke-0b78451839eebdba59d8ac603067f5c7c7d5284c.tar.bz2
Revert use of Java 7 'XXX' Time Pattern element.
Not supported in Android. Was introduced in commit 8fe7526. Change-Id: I9fb396749c92b89cbaa7fac6cdeb047161ed0358
-rw-r--r--src/com/isode/stroke/base/DateTime.java30
1 files changed, 27 insertions, 3 deletions
diff --git a/src/com/isode/stroke/base/DateTime.java b/src/com/isode/stroke/base/DateTime.java
index 4c8310a..3cceb09 100644
--- a/src/com/isode/stroke/base/DateTime.java
+++ b/src/com/isode/stroke/base/DateTime.java
@@ -12,13 +12,34 @@ import java.util.Locale;
12import java.util.TimeZone; 12import java.util.TimeZone;
13 13
14public class DateTime { 14public class DateTime {
15
16 // Cannot use Java 7 'X' format specifier for timezone
17 // (not supported on Android)
15 public static Date stringToDate(String date) { 18 public static Date stringToDate(String date) {
16 SimpleDateFormat parser = new SimpleDateFormat(format, Locale.US); 19 if (date == null || date.length() < 1) return null;
20 SimpleDateFormat parser;
21 if (date.charAt(date.length()-1) == 'Z') {
22 parser = new SimpleDateFormat(parseFormatZ, Locale.US);
23 } else {
24 parser = new SimpleDateFormat(parseFormatTz, Locale.US);
25 }
17 parser.setTimeZone(TimeZone.getTimeZone("UTC")); 26 parser.setTimeZone(TimeZone.getTimeZone("UTC"));
18 try { 27 try {
19 return parser.parse(date); 28 return parser.parse(date);
20 } catch (ParseException e) { 29 } catch (ParseException e) {
21 return null; 30 if (date.matches(".*[+-]\\d\\d:\\d\\d")) { // strip ':' from timezone
31 date = date.substring(0, date.length()-3) + date.substring(date.length()-2);
32 } else if (date.matches(".*[+-]\\d\\d")) { // make timezone 4 digits (append minutes)
33 date += "00";
34 } else {
35 parser = new SimpleDateFormat(parseFormatNoTz, Locale.US);
36 parser.setTimeZone(TimeZone.getTimeZone("UTC"));
37 }
38 try {
39 return parser.parse(date);
40 } catch (ParseException e1) {
41 return null;
42 }
22 } 43 }
23 } 44 }
24 45
@@ -28,5 +49,8 @@ public class DateTime {
28 return parser.format(date); 49 return parser.format(date);
29 } 50 }
30 51
31 static private String format = "yyyy-MM-dd'T'HH:mm:ssXXX"; 52 static private String format = "yyyy-MM-dd'T'HH:mm:ss'Z'";
53 static private String parseFormatTz = "yyyy-MM-dd'T'HH:mm:ssZ";
54 static private String parseFormatZ = "yyyy-MM-dd'T'HH:mm:ss'Z'";
55 static private String parseFormatNoTz = "yyyy-MM-dd'T'HH:mm:ss";
32} 56}