Skip to content

Commit 76aa02a

Browse files
committed
DateTimeUtils 提供 ISO 8601 格式转换
1 parent 65169f0 commit 76aa02a

2 files changed

Lines changed: 30 additions & 0 deletions

File tree

src/main/java/com/fengwenyi/javalib/convert/DateTimeUtils.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,22 @@ public static LocalDateTime parseLocalDateTime(String dateTimeStr, String patter
166166
return LocalDateTime.parse(dateTimeStr, formatter);
167167
}
168168

169+
/**
170+
* 日期时间字符串(含时区)解析为日期时间格式
171+
* @param dateTimeStr 日期时间字符串(含时区)
172+
* @param pattern 格式
173+
* @param zoneId 时区
174+
* @return 日期时间格式 {@link LocalDateTime}
175+
*/
176+
public static LocalDateTime parseLocalDateTime(String dateTimeStr, String pattern, String zoneId) {
177+
if (StrUtils.isBlank(dateTimeStr) || StrUtils.isBlank(pattern) || StrUtils.isBlank(zoneId)) {
178+
return null;
179+
}
180+
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(pattern).withZone(ZoneId.of(zoneId));
181+
OffsetDateTime odt = OffsetDateTime.parse(dateTimeStr, formatter);
182+
return odt.atZoneSameInstant(ZoneId.systemDefault()).toLocalDateTime();
183+
}
184+
169185
/**
170186
* 字符串格式的日期解析成日期格式
171187
*

src/test/java/com/fengwenyi/javalib/DateTimeUtilsTests.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -182,4 +182,18 @@ public void testPeriod() {
182182
System.out.println(period.isNegative()); // startDate > endDate; 负数;ture ; 相等:false
183183
}
184184

185+
@Test
186+
public void testParseDateTime() {
187+
// String dateTimeStr = "2024-08-04T10:35:00Z";
188+
// String pattern = "yyyy-MM-dd'T'HH:mm:ssX";
189+
190+
// String pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSX";
191+
192+
String dateTimeStr = "2024-08-04T10:35:00.3979847Z";
193+
String pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSSSSSX";
194+
String zoneId = "UTC";
195+
LocalDateTime localDateTime = DateTimeUtils.parseLocalDateTime(dateTimeStr, pattern, zoneId);
196+
System.out.println(DateTimeUtils.format(localDateTime, DateTimeUtils.DATE_TIME));
197+
}
198+
185199
}

0 commit comments

Comments
 (0)