Skip to content

Commit d8b5161

Browse files
committed
Solve UTC issue on parseDuration
1 parent ca6cbb3 commit d8b5161

2 files changed

Lines changed: 7 additions & 10 deletions

File tree

core/src/main/java/com/onelogin/saml2/util/Util.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
import java.util.Calendar;
3333
import java.util.HashMap;
3434
import java.util.Iterator;
35+
import java.util.Locale;
3536
import java.util.Map;
3637
import java.util.Random;
3738
import java.util.TimeZone;
@@ -1422,12 +1423,11 @@ public static long parseDuration(String durationString, long timestamp) throws I
14221423
haveMinus = true;
14231424
}
14241425

1425-
PeriodFormatter periodFormatter = ISOPeriodFormat.standard();
1426+
PeriodFormatter periodFormatter = ISOPeriodFormat.standard().withLocale(new Locale("UTC"));
14261427
Period period = periodFormatter.parsePeriod(durationString);
14271428

1428-
DateTime dt = new DateTime(timestamp * 1000);
1429-
dt.toDateTime(DateTimeZone.UTC);
1430-
1429+
DateTime dt = new DateTime(timestamp * 1000, DateTimeZone.UTC);
1430+
14311431
DateTime result = null;
14321432
if (haveMinus) {
14331433
result = dt.minus(period);
@@ -1441,8 +1441,7 @@ public static long parseDuration(String durationString, long timestamp) throws I
14411441
* @return the unix timestamp that matches the current time.
14421442
*/
14431443
public static Long getCurrentTimeStamp() {
1444-
DateTime currentDate = new DateTime();
1445-
currentDate.toDateTime(DateTimeZone.UTC);
1444+
DateTime currentDate = new DateTime(DateTimeZone.UTC);
14461445
return currentDate.getMillis() / 1000;
14471446
}
14481447

@@ -1538,6 +1537,7 @@ public static String formatDateTime(long timeInMillis, boolean millis) {
15381537
* @return datetime
15391538
*/
15401539
public static DateTime parseDateTime(String dateTime) {
1540+
15411541
DateTime parsedData = null;
15421542
try {
15431543
parsedData = DATE_TIME_FORMAT.parseDateTime(dateTime);

core/src/test/java/com/onelogin/saml2/test/util/UtilsTest.java

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1940,14 +1940,11 @@ public void testUniqid() {
19401940
*
19411941
* @see com.onelogin.saml2.util.Util#parseDuration
19421942
*/
1943-
/* TODO
1944-
*
19451943
@Test(expected=IllegalArgumentException.class)
19461944
public void testParseDurationException() throws Exception {
19471945
long timestamp = 1393876825L;// 2014-03-03 21:00:25
19481946
long parsedDuration = Util.parseDuration("aaa", timestamp);
19491947
}
1950-
*/
19511948

19521949
/**
19531950
* Tests the parseDuration method
@@ -1969,7 +1966,7 @@ public void testParseDuration() throws Exception {
19691966

19701967
String newDuration = "P1Y1M";
19711968
long parsedDuration4 = Util.parseDuration(newDuration, timestamp);
1972-
assertEquals(1428087625L, parsedDuration4);
1969+
assertEquals(1428091225L, parsedDuration4);
19731970

19741971
String negDuration = "-P14M";
19751972
long parsedDuration5 = Util.parseDuration(negDuration, timestamp);

0 commit comments

Comments
 (0)