Merge remote-tracking branch 'origin/master'
This commit is contained in:
commit
b691f9a3de
@ -44,6 +44,7 @@ import java.time.OffsetDateTime;
|
|||||||
import java.time.ZoneId;
|
import java.time.ZoneId;
|
||||||
import java.time.ZoneOffset;
|
import java.time.ZoneOffset;
|
||||||
import java.time.format.DateTimeFormatter;
|
import java.time.format.DateTimeFormatter;
|
||||||
|
import java.time.format.DateTimeParseException;
|
||||||
import java.util.Properties;
|
import java.util.Properties;
|
||||||
|
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
@ -188,13 +189,31 @@ public class ParsingUtilities {
|
|||||||
* @return LocalDateTime or null if the parse failed
|
* @return LocalDateTime or null if the parse failed
|
||||||
*/
|
*/
|
||||||
static public OffsetDateTime stringToDate(String s) {
|
static public OffsetDateTime stringToDate(String s) {
|
||||||
Instant instant = Instant.parse(s);
|
// Accept timestamps with an explicit time zone
|
||||||
return OffsetDateTime.ofInstant(instant, ZoneId.of("Z"));
|
try {
|
||||||
|
return OffsetDateTime.parse(s);
|
||||||
|
} catch(DateTimeParseException e) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// Also accept timestamps without an explicit zone and
|
||||||
|
// assume them to be in local time.
|
||||||
|
try {
|
||||||
|
LocalDateTime localTime = LocalDateTime.parse(s);
|
||||||
|
return OffsetDateTime.of(localTime, ZoneId.systemDefault().getRules().getOffset(localTime));
|
||||||
|
} catch(DateTimeParseException e) {
|
||||||
|
|
||||||
|
}
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
static public LocalDateTime stringToLocalDate(String s) {
|
static public LocalDateTime stringToLocalDate(String s) {
|
||||||
Instant instant = Instant.parse(s);
|
// parse the string as a date and express it in local time
|
||||||
return LocalDateTime.ofInstant(instant, ZoneId.systemDefault());
|
OffsetDateTime parsed = stringToDate(s);
|
||||||
|
if (parsed == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return parsed.toLocalDateTime();
|
||||||
}
|
}
|
||||||
|
|
||||||
static public String instantToString(Instant instant) {
|
static public String instantToString(Instant instant) {
|
||||||
|
@ -105,7 +105,24 @@ public class ParsingUtilitiesTests extends RefineTest {
|
|||||||
OffsetDateTime zdt = ParsingUtilities.stringToDate(historyEntryDate);
|
OffsetDateTime zdt = ParsingUtilities.stringToDate(historyEntryDate);
|
||||||
String zdtString = ParsingUtilities.dateToString(zdt);
|
String zdtString = ParsingUtilities.dateToString(zdt);
|
||||||
Assert.assertEquals(zdtString, historyEntryDate);
|
Assert.assertEquals(zdtString, historyEntryDate);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void stringToDate() {
|
||||||
|
Assert.assertEquals(2017, ParsingUtilities.stringToDate("2017-04-03T08:09:43.123").getYear());
|
||||||
|
Assert.assertEquals(2017, ParsingUtilities.stringToDate("2017-04-03T08:09:43").getYear());
|
||||||
|
Assert.assertEquals(2017, ParsingUtilities.stringToDate("2017-04-03T08:09:43Z").getYear());
|
||||||
|
Assert.assertEquals(2017, ParsingUtilities.stringToDate("2017-04-03T08:09:43.123Z").getYear());
|
||||||
|
Assert.assertEquals(2017, ParsingUtilities.stringToDate("2017-04-03T08:09:43+00:00").getYear());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void stringToLocalDate() {
|
||||||
|
Assert.assertEquals(2017, ParsingUtilities.stringToLocalDate("2017-04-03T08:09:43.123").getYear());
|
||||||
|
Assert.assertEquals(2017, ParsingUtilities.stringToLocalDate("2017-04-03T08:09:43").getYear());
|
||||||
|
Assert.assertEquals(2017, ParsingUtilities.stringToLocalDate("2017-04-03T08:09:43Z").getYear());
|
||||||
|
Assert.assertEquals(2017, ParsingUtilities.stringToLocalDate("2017-04-03T08:09:43.123Z").getYear());
|
||||||
|
Assert.assertEquals(2017, ParsingUtilities.stringToLocalDate("2017-04-03T08:09:43+00:00").getYear());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
Loading…
Reference in New Issue
Block a user