Joda-Time库如何设置输出6位小数的秒级时间精度
解决方案
首先修正两处问题:
- 你当前解析用的DateTimeFormatter格式串存在错误:小写
mm对应分钟,月份需要用大写MM;如果你的时间是24小时制,小时需要用大写HH而非12小时制的小写hh,否则会出现解析结果和预期不符的问题(你当前输出的月份为1月就是该错误导致的)。 - Joda DateTime默认的
toString()方法仅输出毫秒级精度(3位小数),要得到6位微秒精度的输出,需要自定义输出用的格式化器,指定秒的小数部分保留6位。
修正后可运行的完整代码:
import org.joda.time.DateTime; import org.joda.time.DateTimeZone; import org.joda.time.format.DateTimeFormat; import org.joda.time.format.DateTimeFormatter; public class DateTest { public static void main(String[] args) { String time = "124204"; String date = "05/09/25"; // 修正解析格式串:MM对应月份,HH对应24小时制 DateTimeFormatter parseFormatter = DateTimeFormat.forPattern("dd/MM/yyHHmmss").withZone(DateTimeZone.UTC); String dateInString = date.concat(time); DateTime dateTime = DateTime.parse(dateInString, parseFormatter); // 自定义输出格式,SSSSSS对应6位微秒 DateTimeFormatter outputFormatter = DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ss.SSSSSS'Z'").withZone(DateTimeZone.UTC); String result = outputFormatter.print(dateTime); System.out.println(result); } }
输出结果:
2025-09-05T12:42:04.000000Z
如果你的原始需求确实需要解析05/09/25为2025年1月5日,可自行调整解析格式串的顺序即可,输出逻辑保持不变。
内容的提问来源于stack exchange,提问作者Programmer
相关产品推荐
相关产品推荐

