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

如何将服务器接收的TZ格式日期转换为DD/MM/YYYY格式显示

日期格式转换:从ISO 8601到DD/MM/YYYY

服务器返回的日期格式为2022-12-08T06:07:34.780Z(符合yyyy-MM-dd'T'HH:mm:ss.SSSZ规范),需要转换为DD/MM/YYYY格式显示,以下是两种可行实现方案:

方案一:使用SimpleDateFormat(旧API)

原代码未匹配日期中的毫秒部分,且缺少格式化输出逻辑,修正后代码如下:

// 定义输入格式(匹配带毫秒的ISO 8601格式)
SimpleDateFormat inputFormatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", Locale.ENGLISH);
inputFormatter.setTimeZone(TimeZone.getTimeZone("GMT")); // Z代表GMT时区

// 定义目标输出格式
SimpleDateFormat outputFormatter = new SimpleDateFormat("dd/MM/yyyy", Locale.ENGLISH);

try {
    // 解析原日期字符串为Date对象
    Date date = inputFormatter.parse(orderlist.getCreatedAt());
    // 格式化为目标字符串
    String formattedDate = outputFormatter.format(date);
    Utility.log_d("Formatted Date", formattedDate); // 输出示例:08/12/2022
} catch (ParseException e) {
    e.printStackTrace();
}

方案二:使用Java 8+ java.time API(推荐)

java.time包是线程安全的日期处理API,代码更简洁可靠:

// 直接解析ISO 8601格式字符串为Instant
Instant instant = Instant.parse(orderlist.getCreatedAt());
// 转换为UTC时区的LocalDate(如需本地时区,替换为ZoneId.systemDefault())
LocalDate localDate = instant.atZone(ZoneId.of("UTC")).toLocalDate();
// 定义目标格式并格式化
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd/MM/yyyy", Locale.ENGLISH);
String formattedDate = localDate.format(formatter);
Utility.log_d("Formatted Date", formattedDate); // 输出示例:08/12/2022

注意事项

  • 若需基于本地时区转换日期,将ZoneId.of("UTC")替换为ZoneId.systemDefault()或指定具体时区(如ZoneId.of("Asia/Shanghai"))
  • 确保orderlist.getCreatedAt()返回的字符串格式符合ISO 8601规范,避免解析异常

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 00:15:35