You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java 11提取ISO格式时间字符串日期部分的最优方案

Java 11提取ISO格式字符串的日期部分(yyyy-MM-dd)

以下是几种可行的最优实现方法,按推荐优先级排序:

方法一:基于Java时间API解析(推荐,健壮性高)

利用java.time包的类处理日期,避免字符串操作的潜在风险:

String s = "2023-12-15T10:13:44.544Z";
// 解析为UTC时间的Instant,转换为LocalDate
LocalDate date = Instant.parse(s).atZone(ZoneOffset.UTC).toLocalDate();
// LocalDate的toString()默认输出yyyy-MM-dd格式
String dateStr = date.toString();

原理:原字符串是标准UTC ISO格式,Instant可直接解析;通过atZone(ZoneOffset.UTC)转为UTC时区的日期时间对象,再提取日期部分。

方法二:使用DateTimeFormatter直接解析为LocalDate

同样基于时间API,适合需要自定义格式的场景:

String s = "2023-12-15T10:13:44.544Z";
DateTimeFormatter formatter = DateTimeFormatter.ISO_INSTANT;
// 指定UTC时区解析,直接得到LocalDate
LocalDate date = LocalDate.parse(s, formatter.withZone(ZoneOffset.UTC));
String dateStr = date.toString();

如果需要显式指定格式,也可以替换为自定义Formatter:

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSX");

方法三:字符串截取(仅当格式绝对固定时使用)

如果能确保输入字符串始终是yyyy-MM-ddTHH:mm:ss.SSSZ格式,可直接截取前10位:

String s = "2023-12-15T10:13:44.544Z";
String dateStr = s.substring(0, 10);

注意:此方法不具备容错性,若输入格式发生变化(如年份位数改变、分隔符不同)会直接出错,仅适合固定格式的场景。

内容的提问来源于stack exchange,提问作者N9909

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 19:42:37