有谁知道如何解析日期,例如:Mon Aug 04 16:07:00 CEST 2014
使用Joda的dd/MM/YYYY HH:MM:SS
格式化程序到DateTime
。
我试过了:
final DateTimeFormatter sdf = DateTimeFormat.forPattern(DATE_FORMAT);
DateTime lastDateOnline = sdf.parseDateTime(lastCommunicationToDisplay.getDateOnLine().toString());
return lastDateOnline.toString();
DATE_FORMAT = dd/MM/YYYY HH:MM:SS
和
lastCommunicationToDisplay.getDateOnLine().toString() = Mon Aug 04 16:07:00 CEST 2014
我找不到关于该图书馆的明确解释。我已经请求使用它代替SimpleDateFormat
,因为它不是线程安全的。
答案 0 :(得分:7)
<强>解决方案强>
如果您只需要将LocalDate转换为符合模式的字符串:“dd / MM / YYYY HH:mm:ss”,那么您可以使用重载的toString()方法以更简单的方式执行此操作在LocalDate上:
a)直接接收格式字符串的那个:
LocalDate date = lastCommunicationToDisplay.getDateOnLine();
System.out.println(date.toString("dd/MM/YYYY HH:mm:ss"));
b)接收使用上述字符串初始化的DateTimeFormatter的那个:
DateTimeFormatter dtf = DateTimeFormat.forPattern("dd/MM/YYYY HH:mm:ss");
LocalDate date = lastCommunicationToDisplay.getDateOnLine();
System.out.println(date.toString(dtf));
您的代码出了什么问题
您使用的格式字符串与您作为输入发送的日期字符串不兼容。您使用DateTimeFormatter的方式用于将该格式的字符串解析为LocalDates,而不是相反。
如果输入字符串如下所示,格式将是合适的: 04/08/2014 22:44:33
由于您的外观不同,格式的以下值是兼容的(假设您的时区始终为CEST):
DATE_FORMAT = "E MMM dd HH:mm:ss 'CEST' YYYY";
因此整个代码应如下所示:
String dateString = "Mon Aug 04 16:07:00 CEST 2014";
DateTimeFormatter dtf = DateTimeFormat.forPattern("E MMM dd HH:mm:ss 'CEST' YYYY");
LocalDate date = dtf.parseLocalDate(dateString);
System.out.println(date.toString("MM/dd/yyyy")); // or use toString(DateTimeFormatter) and use your pattern with a small adjusment here (dd/MM/YYYY HH:mm:ss)
但是,我建议前两个建议中的一个。