有谁知道如何使用Joda中的DateTime格式化程序将日期解析为:Mon Aug 04 16:07:00 CEST 2014 to dd/MM/YYYY HH:MM:SS。我试过了:
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,因为它不是线程安全。
发布于 2014-08-05 04:02:33
解决方案
如果您所要做的就是将LocalDate转换为与模式"dd/MM/YYYY HH:mm:ss“相关的字符串,那么您可以使用LocalDate上的重载toString()方法,以一种更简单的方式完成此操作:
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)然而,我推荐前两个建议中的一个。
https://stackoverflow.com/questions/25122796
复制相似问题