java - 了解 JodaTime DateTime.parse(string, formatter)

标签 java datetime formatting jodatime

parse 中格式化程序的样式DateTime 类的方法必须匹配字符串的确切样式?例如,我从数据库 (Oracle) 中获取 TimeStamp 对象并将其转换为字符串。在数据库中,时间戳是这样存储的

08-AUG-12 12.00.00.000000000 AM

我将格式化程序设置为这种样式

String pattern = "dd-MMM-yy";

我得到了这个异常

java.lang.IllegalArgumentException: Invalid format: "08-AUG-12 12.00.00 AM" is malformed at " 12.00.00 AM"

org.joda.time.format.DateTimeFormatter.parseDateTime(DateTimeFormatter.java:866)

org.joda.time.DateTime.parse(DateTime.java:144)

这究竟是什么意思,我将如何解决它?当我将格式化程序设置为 "yy-MMM-dd hh.mm.ss aa" 时,我没有收到异常,但它在浏览器中打印如下:2008-08-12T00 :00:00.000-04:00,但我需要将其打印为 "dd-MMM-yy hh:mm:ss aa"

最佳答案

改用 LocalDateTime:

String input = "08-AUG-12 12.00.00 AM";
String pattern = "dd-MMM-yy hh.mm.ss aa";

LocalDateTime localDateTime = LocalDateTime.parse(input, DateTimeFormat.forPattern(pattern));

编辑

事实上,您也可以使用 DateTime 来做到这一点:

private static String parseDateTime(String input){
     String pattern = "dd-MMM-yy hh.mm.ss aa";
     DateTime dateTime  = DateTime.parse(input, DateTimeFormat.forPattern(pattern));
     return dateTime.toString("dd-MMM-yy hh:mm:ss aa");
}

关于java - 了解 JodaTime DateTime.parse(string, formatter),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12166956/

相关文章:

java - 如何将字节数组转换为日语字符

python - 在Django表单中手动设置时区

java - 限制 Joda Time 的日期范围

string - 将回车 (\r) 转换为实际覆盖

matlab - 如何格式化数据以在 nntool (MATLAB) 中使用?

c# - 在不丢失格式的情况下更改 richtextbox 的字体

java - Get/Set 方法错误输出

java - 如何使用 Java 获取 macOS 上的时区信息?

java分割日期时间段并返回数组

java - 如何替换maven项目中的传递依赖库