我正在使用Joda API格式化当前时间(结果必须是格式为&#34的字符串; yyyy-MM-dd HH:mm:ss")。下面我提供了我的代码和错误消息:
DateTimeFormatter dtf = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss");
DateTime dt = new DateTime();
String datetime = dtf.parseDateTime(dt.toString()).toString();
错误讯息:
线程中的异常" AWT-EventQueue-0" java.lang.IllegalArgumentException:格式无效: " 2014-11-17T11:47:29.229 + 01:00"在" T11:47:29.229 + 01:00" 在 org.joda.time.format.DateTimeFormatter.parseDateTime(DateTimeFormatter.java:899)
答案 0 :(得分:3)
默认的DateTime字符串表示需要不同的模式:
DateTimeFormatter dtf = DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ss.SSS'+01:00'");
如果要使用模式格式化日期,则需要使用print()方法:
DateTimeFormatter dtf = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss");
DateTime dt = new DateTime();
String datetime = dtf.print(dt);
答案 1 :(得分:3)
如果要使用自定义格式转换为字符串,请执行
DateTimeFormatter dtf = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss");
DateTime dt = new DateTime();
String datetime = dtf.print(dt);
您目前在最后一行中所做的是
String defaultFormatted = dt.toString();
// this is what contains the "T11:47:29.229+01:00" part
DateTime dateTime = dtf.parseDateTime(defaultFormatted);
// we're back at the beginning, this is equivalent to your original "dt"
String defaultFormattedAgain = dateTime.toString();
// and this is the same as the initial string with T11:..
所以你要转换为&从字符串中多次但从未使用dtf
来实际格式化字符串的外观。