|
1 | 1 | package com.contentstack.sdk; |
2 | 2 |
|
3 | | -import java.text.ParseException; |
4 | | -import java.text.SimpleDateFormat; |
5 | | -import java.util.*; |
6 | | -import java.util.logging.Level; |
| 3 | +import org.jetbrains.annotations.NotNull; |
| 4 | + |
| 5 | +import java.time.Instant; |
| 6 | +import java.time.LocalDateTime; |
| 7 | +import java.time.ZoneId; |
| 8 | +import java.time.ZonedDateTime; |
| 9 | +import java.time.format.DateTimeFormatter; |
| 10 | +import java.util.Calendar; |
| 11 | +import java.util.TimeZone; |
7 | 12 | import java.util.logging.Logger; |
8 | 13 |
|
9 | 14 | /** |
|
16 | 21 | public class Constants { |
17 | 22 |
|
18 | 23 | private static final Logger logger = Logger.getLogger(Constants.class.getSimpleName()); |
19 | | - protected static final String SDK_VERSION = "1.10.1"; |
| 24 | + protected static final String SDK_VERSION = "1.10.2"; |
20 | 25 | protected static final String ENVIRONMENT = "environment"; |
21 | 26 | protected static final String CONTENT_TYPE_UID = "content_type_uid"; |
22 | 27 | protected static final String ENTRY_UID = "entry_uid"; |
@@ -66,71 +71,53 @@ public enum REQUEST_CONTROLLER { |
66 | 71 | public static final String QUERY_EXCEPTION = "Please provide valid params."; |
67 | 72 |
|
68 | 73 |
|
69 | | - |
70 | 74 | /** |
71 | | - * Parse date calendar. |
72 | | - * |
73 | | - * @param date |
74 | | - * the date |
75 | | - * @param timeZone |
76 | | - * the time zone |
77 | | - * @return the calendar |
| 75 | + * @param dateString |
| 76 | + * the date in string format |
| 77 | + * @param zoneId |
| 78 | + * the string zoneId |
| 79 | + * @return Calendar |
78 | 80 | */ |
79 | | - public static Calendar parseDate(String date, TimeZone timeZone) { |
80 | | - ArrayList<String> knownPatterns = new ArrayList<>(); |
81 | | - knownPatterns.add("yyyy-MM-dd'T'HH:mm:ssZ"); |
82 | | - knownPatterns.add("yyyy-MM-dd'T'HH:mm:ss'Z'"); |
83 | | - knownPatterns.add("yyyy-MM-dd'T'HH:mm.ss'Z'"); |
84 | | - knownPatterns.add("yyyy-MM-dd'T'HH:mmZ"); |
85 | | - knownPatterns.add("yyyy-MM-dd'T'HH:mm'Z'"); |
86 | | - knownPatterns.add("yyyy-MM-dd'T'HH:mm'Z'"); |
87 | | - knownPatterns.add("yyyy-MM-dd'T'HH:mm:ss"); |
88 | | - knownPatterns.add("yyyy-MM-dd' 'HH:mm:ss"); |
89 | | - knownPatterns.add("yyyy-MM-dd"); |
90 | | - knownPatterns.add("HH:mm:ssZ"); |
91 | | - knownPatterns.add("HH:mm:ss'Z'"); |
92 | | - |
93 | | - for (String formatString : knownPatterns) { |
94 | | - try { |
95 | | - return parseDate(date, formatString, timeZone); |
96 | | - } catch (ParseException e) { |
97 | | - logger.log(Level.WARNING, e.getLocalizedMessage(), e); |
98 | | - } |
99 | | - } |
100 | | - return null; |
| 81 | + public static Calendar parseDateToTimeZone(@NotNull String dateString, @NotNull String zoneId) { |
| 82 | + //String dateString = "2016-12-16T12:36:33.961Z"; |
| 83 | + Instant instant = Instant.parse(dateString); |
| 84 | + // Define the target time zone |
| 85 | + ZoneId targetTimeZone = ZoneId.of(zoneId); |
| 86 | + // Convert the instant to the target time zone |
| 87 | + ZonedDateTime dateTime = instant.atZone(targetTimeZone); |
| 88 | + // Extract the year, month, day, hour, minute, and second |
| 89 | + Calendar cal = Calendar.getInstance(); |
| 90 | + cal.set(dateTime.getYear(), dateTime.getMonthValue(), dateTime.getDayOfMonth(), dateTime.getHour(), dateTime.getMinute(), dateTime.getSecond()); |
| 91 | + return cal; |
| 92 | + } |
| 93 | + |
| 94 | + private static Calendar toCalendar(@NotNull String date) { |
| 95 | + DateTimeFormatter formatter = DateTimeFormatter.ISO_DATE_TIME; |
| 96 | + LocalDateTime dt = LocalDateTime.parse(date, formatter); |
| 97 | + Calendar cal = Calendar.getInstance(); |
| 98 | + cal.set(dt.getYear(), dt.getMonthValue(), dt.getDayOfMonth(), dt.getHour(), dt.getMinute(), dt.getSecond()); |
| 99 | + return cal; |
101 | 100 | } |
102 | 101 |
|
| 102 | + |
103 | 103 | /** |
104 | | - * Parse date calendar. |
105 | | - * |
106 | 104 | * @param date |
107 | | - * the date |
108 | | - * @param dateFormat |
109 | | - * the date format |
| 105 | + * The date in string format like (String dateString = "2016-12-16T12:36:33.961Z";) |
110 | 106 | * @param timeZone |
111 | | - * the time zone |
112 | | - * @return the calendar |
113 | | - * @throws ParseException |
114 | | - * the parse exception |
| 107 | + * the time zone as string |
| 108 | + * @return calendar @{@link Calendar} |
115 | 109 | */ |
116 | | - public static Calendar parseDate(String date, String dateFormat, TimeZone timeZone) throws ParseException { |
117 | | - Calendar cal = Calendar.getInstance(); |
118 | | - SimpleDateFormat dateFormatter = new SimpleDateFormat(dateFormat); |
119 | | - Date dateObject = dateFormatter.parse(date); |
120 | | - String month = new SimpleDateFormat("MM").format(dateObject); |
121 | | - String day = new SimpleDateFormat("dd").format(dateObject); |
122 | | - String year = new SimpleDateFormat("yyyy").format(dateObject); |
123 | | - String hourOfDay = new SimpleDateFormat("HH").format(dateObject); |
124 | | - String min = new SimpleDateFormat("mm").format(dateObject); |
125 | | - String sec = new SimpleDateFormat("ss").format(dateObject); |
126 | | - |
| 110 | + public static Calendar parseDate(@NotNull String date, TimeZone timeZone) { |
| 111 | + // Use the ISO-8601 format to parse the date string |
| 112 | + if (date.isEmpty()){ |
| 113 | + return null; |
| 114 | + } |
| 115 | + Calendar cal = toCalendar(date); |
127 | 116 | if (timeZone != null) { |
128 | 117 | cal.setTimeZone(timeZone); |
129 | 118 | } else { |
130 | 119 | cal.setTimeZone(TimeZone.getDefault()); |
131 | 120 | } |
132 | | - cal.set(Integer.parseInt(year), Integer.parseInt(month) - 1, Integer.parseInt(day), Integer.parseInt(hourOfDay), |
133 | | - Integer.parseInt(min), Integer.parseInt(sec)); |
134 | 121 | return cal; |
135 | 122 | } |
136 | 123 |
|
|
0 commit comments