File tree Expand file tree Collapse file tree 3 files changed +54
-13
lines changed
main/java/com/shopify/buy3
test/java/com/shopify/buy3 Expand file tree Collapse file tree 3 files changed +54
-13
lines changed Original file line number Diff line number Diff line change @@ -5,7 +5,7 @@ plugins {
5
5
`maven- publish`
6
6
}
7
7
8
- version = " 2025.4.0 "
8
+ version = " 2025.4.1 "
9
9
10
10
android {
11
11
namespace = " com.shopify.buy3"
Original file line number Diff line number Diff line change 26
26
27
27
import java .text .ParseException ;
28
28
import java .text .SimpleDateFormat ;
29
+ import java .time .Instant ;
29
30
import java .util .Date ;
30
31
import java .util .Locale ;
32
+ import java .util .TimeZone ;
31
33
32
34
final class Utils {
33
- private static final SimpleDateFormat DATE_TIME_FORMATTER = new SimpleDateFormat ("yyyy-MM-dd'T'HH:mm:ssZ" , Locale .US );
34
-
35
- static Date parseDateTime (String dateTime ) {
36
- try {
37
- return DATE_TIME_FORMATTER .parse (dateTime );
38
- } catch (ParseException e ) {
39
- return new Date ();
40
- }
41
- }
42
-
43
- private Utils () {
44
- }
35
+ private static final SimpleDateFormat Z_DATE_TIME_FORMATTER = new SimpleDateFormat ("yyyy-MM-dd'T'HH:mm:ss'Z'" , Locale .US );
36
+ private static final SimpleDateFormat DATE_TIME_FORMATTER = new SimpleDateFormat ("yyyy-MM-dd'T'HH:mm:ss" , Locale .US );
37
+ private static final TimeZone timeZone = TimeZone .getTimeZone ("UTC" );
38
+
39
+ static Date parseDateTime (String dateTime ) {
40
+ DATE_TIME_FORMATTER .setTimeZone (timeZone );
41
+ Z_DATE_TIME_FORMATTER .setTimeZone (timeZone );
42
+
43
+ try {
44
+ return Z_DATE_TIME_FORMATTER .parse (dateTime );
45
+ } catch (Exception ignored ) { }
46
+
47
+ try {
48
+ return DATE_TIME_FORMATTER .parse (dateTime );
49
+ } catch (ParseException ignored ) { }
50
+
51
+ try {
52
+ return DATE_TIME_FORMATTER .parse (new Date ().toString ());
53
+ } catch (ParseException e ) {
54
+ return new Date ();
55
+ }
56
+ }
57
+
58
+ private Utils () {
59
+ }
45
60
}
Original file line number Diff line number Diff line change 24
24
package com.shopify.buy3
25
25
26
26
import org.junit.Assert
27
+ import org.junit.Test
28
+ import java.time.ZoneOffset
27
29
28
30
internal fun checkForIllegalArgumentException (action : () -> Unit ) {
29
31
try {
@@ -32,4 +34,28 @@ internal fun checkForIllegalArgumentException(action: () -> Unit) {
32
34
} catch (e: IllegalArgumentException ) {
33
35
// ignore
34
36
}
37
+ }
38
+
39
+ class UtilsTest {
40
+ @Test
41
+ fun testDateTimeParsingFormat () {
42
+ val dateTimeStr = " 2023-02-03T15:11:06"
43
+
44
+ Assert .assertEquals(
45
+ " Parsed date should match expected timestamp" ,
46
+ " 2023-02-03T15:11:06Z" ,
47
+ Utils .parseDateTime(dateTimeStr).toInstant().atZone(ZoneOffset .UTC ).toString()
48
+ )
49
+ }
50
+
51
+ @Test
52
+ fun test_Z_DateTimeParsingFormat () {
53
+ val dateTimeStr = " 2022-07-06T00:51:06Z"
54
+ val dateTime = Utils .parseDateTime(dateTimeStr)
55
+ Assert .assertEquals(
56
+ " Parsing returns current time instead of actual date" ,
57
+ dateTimeStr,
58
+ dateTime.toInstant().atZone(ZoneOffset .UTC ).toString()
59
+ )
60
+ }
35
61
}
You can’t perform that action at this time.
0 commit comments