本文介绍如何使用 java 的 simpledateformat 类将形如 "2023-03-13 12:00:02" 的日期字符串转换为 "13-03-2023 12:00:02.000000000" 格式,涵盖解析、格式化关键步骤及常见陷阱。
本文介绍如何使用 java 的 simpledateformat 类将形如 "2023-03-13 12:00:02" 的日期字符串转换为 "13-03-2023 12:00:02.000000000" 格式,涵盖解析、格式化关键步骤及常见陷阱。
要实现从 "yyyy-MM-dd HH:mm:ss" 到 "dd-MM-yyyy HH:mm:ss.SSSSSSSSS" 的字符串格式转换,核心在于两步操作:先正确解析原始字符串为 Date 对象,再按目标模式重新格式化。注意:Java 原生 SimpleDateFormat 不支持纳秒(9位小数秒)输出——它最多精确到毫秒(SSS),因此需额外处理纳秒部分。
以下是推荐的实现方式(兼容 Java 8+,兼顾可读性与健壮性):
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class DateFormatExample {
// ✅ 推荐:使用 SimpleDateFormat(适用于 Java < 8 或需兼容旧环境)
static String formatoFechaFinBd(String dateService) throws ParseException {
// 1. 解析输入字符串:注意原始格式不含 'T' 和 'Z',不应使用 "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"
Date date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(dateService);
// 2. 格式化为 dd-MM-yyyy HH:mm:ss + 补零的9位纳秒(因 SimpleDateFormat 不支持纳秒,此处默认补 "000000000")
String baseFormat = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss").format(date);
return baseFormat + ".000000000"; // 纳秒部分固定补零(若需真实纳秒,请用 java.time)
}
}⚠️ 重要注意事项:
- 原始代码中 "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'" 模式与输入 "2023-03-13 12:00:02" 不匹配(多了 'T' 和 'Z'),会导致 ParseException;
- hh 表示 12 小时制(01–12),应使用 HH 表示 24 小时制(00–23),避免时间错乱;
- Ka 是无效模式字母,属误写;SSSSSSSSS 在 SimpleDateFormat 中会被截断为 SSS(毫秒),无法输出纳秒——若业务严格要求纳秒精度(如数据库 TIMESTAMP(9)),必须改用 java.time API:
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
// ✅ 更现代、线程安全、支持纳秒的方案(Java 8+)
static String formatoFechaFinBdModern(String dateService) {
LocalDateTime dt = LocalDateTime.parse(dateService, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
// 注意:LocalDateTime.parse() 无法直接解析纳秒,原始字符串无纳秒信息,故补零是合理默认行为
return dt.format(DateTimeFormatter.ofPattern("dd-MM-yyyy HH:mm:ss")) + ".000000000";
}✅ 总结:
立即学习“Java免费学习笔记(深入)”;
- 优先选用 java.time(LocalDateTime + DateTimeFormatter)替代已过时且非线程安全的 SimpleDateFormat;
- 确保解析模式与输入字符串完全一致(空格、分隔符、大小写均敏感);
- 纳秒级格式需明确数据来源——若原始字符串不含纳秒,则补零是安全做法;若需动态纳秒,应从 Instant 或 LocalDateTime.now() 获取完整时间戳后再格式化。


















