From b7d3b346194e3394b6ad9183d3e0e3961089b56f Mon Sep 17 00:00:00 2001 From: Moandji Ezana Date: Tue, 14 Jun 2016 19:58:13 -0400 Subject: [PATCH] Support positive offset in datetime Fixes #31 --- CHANGELOG.md | 1 + .../moandjiezana/toml/DateValueReaderWriter.java | 2 +- src/test/java/com/moandjiezana/toml/DateTest.java | 13 ++++++++++++- 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2dcb39c..fcd7db1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ ## Fixed * Transient fields are not written to TOML files (thanks to __[lare96](https://github.com/lare96)__) +* Support positive timezone offset in datetime (thanks to __[aloyse](https://github.com/aloyse)__) ## 0.5.1 / 2016-01-24 diff --git a/src/main/java/com/moandjiezana/toml/DateValueReaderWriter.java b/src/main/java/com/moandjiezana/toml/DateValueReaderWriter.java index 8119b39..d6a64cf 100644 --- a/src/main/java/com/moandjiezana/toml/DateValueReaderWriter.java +++ b/src/main/java/com/moandjiezana/toml/DateValueReaderWriter.java @@ -40,7 +40,7 @@ class DateValueReaderWriter implements ValueReader, ValueWriter { for (int i = index.get(); i < original.length(); i = index.incrementAndGet()) { char c = original.charAt(i); - if (Character.isDigit(c) || c == '-' || c == ':' || c == '.' || c == 'T' || c == 'Z') { + if (Character.isDigit(c) || c == '-' || c == '+' || c == ':' || c == '.' || c == 'T' || c == 'Z') { sb.append(c); } else { index.decrementAndGet(); diff --git a/src/test/java/com/moandjiezana/toml/DateTest.java b/src/test/java/com/moandjiezana/toml/DateTest.java index bfe8c16..dce1e57 100644 --- a/src/test/java/com/moandjiezana/toml/DateTest.java +++ b/src/test/java/com/moandjiezana/toml/DateTest.java @@ -27,7 +27,18 @@ public class DateTest { Toml toml = new Toml().read("a_date = 1979-05-27T00:32:00-07:00"); Calendar calendar = Calendar.getInstance(UTC); - calendar.set(1979, Calendar.MAY, 27, 7, 32, 00); + calendar.set(1979, Calendar.MAY, 27, 7, 32, 0); + calendar.set(Calendar.MILLISECOND, 0); + + assertEquals(calendar.getTime(), toml.getDate("a_date")); + } + + @Test + public void should_get_date_with_positive_offset() throws Exception { + Toml toml = new Toml().read("a_date = 1979-05-27T07:32:00+07:00"); + + Calendar calendar = Calendar.getInstance(UTC); + calendar.set(1979, Calendar.MAY, 27, 0, 32, 0); calendar.set(Calendar.MILLISECOND, 0); assertEquals(calendar.getTime(), toml.getDate("a_date"));