diff options
| author | Alan Young <consult.awy@gmail.com> | 2016-04-18 16:30:24 (GMT) |
|---|---|---|
| committer | Alan Young <consult.awy@gmail.com> | 2016-04-20 16:28:48 (GMT) |
| commit | 0b78451839eebdba59d8ac603067f5c7c7d5284c (patch) | |
| tree | 35782ab98f1551cc338662f3d13b4e2ae0a9738d | |
| parent | 9b518dcdd98d694a4464895fce17a3c7a8caf569 (diff) | |
| download | stroke-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.java | 30 |
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; | |||
| 12 | import java.util.TimeZone; | 12 | import java.util.TimeZone; |
| 13 | 13 | ||
| 14 | public class DateTime { | 14 | public 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 | } |
Swift