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 {
55 `maven- publish`
66}
77
8- version = " 2025.4.0 "
8+ version = " 2025.4.1 "
99
1010android {
1111 namespace = " com.shopify.buy3"
Original file line number Diff line number Diff line change 2626
2727import java .text .ParseException ;
2828import java .text .SimpleDateFormat ;
29+ import java .time .Instant ;
2930import java .util .Date ;
3031import java .util .Locale ;
32+ import java .util .TimeZone ;
3133
3234final 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+ }
4560}
Original file line number Diff line number Diff line change 2424package com.shopify.buy3
2525
2626import org.junit.Assert
27+ import org.junit.Test
28+ import java.time.ZoneOffset
2729
2830internal fun checkForIllegalArgumentException (action : () -> Unit ) {
2931 try {
@@ -32,4 +34,28 @@ internal fun checkForIllegalArgumentException(action: () -> Unit) {
3234 } catch (e: IllegalArgumentException ) {
3335 // ignore
3436 }
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+ }
3561}
You can’t perform that action at this time.
0 commit comments