首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Joda日期格式化程序

Joda日期格式化程序
EN

Stack Overflow用户
提问于 2014-08-04 23:57:23
回答 1查看 12.7K关注 0票数 2

有谁知道如何使用Joda中的DateTime格式化程序将日期解析为:Mon Aug 04 16:07:00 CEST 2014 to dd/MM/YYYY HH:MM:SS。我试过了:

代码语言:javascript
复制
final DateTimeFormatter sdf = DateTimeFormat.forPattern(DATE_FORMAT);
DateTime lastDateOnline = sdf.parseDateTime(lastCommunicationToDisplay.getDateOnLine().toString());
return lastDateOnline.toString();

DATE_FORMAT = dd/MM/YYYY HH:MM:SSlastCommunicationToDisplay.getDateOnLine().toString() = Mon Aug 04 16:07:00 CEST 2014

我找不到关于那个库的明确解释。我被要求使用它而不是SimpleDateFormat,因为它不是线程安全。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-05 04:02:33

解决方案

如果您所要做的就是将LocalDate转换为与模式"dd/MM/YYYY HH:mm:ss“相关的字符串,那么您可以使用LocalDate上的重载toString()方法,以一种更简单的方式完成此操作:

a)直接接收格式化字符串的那个:

代码语言:javascript
复制
LocalDate date = lastCommunicationToDisplay.getDateOnLine();
System.out.println(date.toString("dd/MM/YYYY HH:mm:ss"));

b)接收用前述字符串初始化的DateTimeFormatter的那个:

代码语言:javascript
复制
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):

代码语言:javascript
复制
DATE_FORMAT = "E MMM dd HH:mm:ss 'CEST' YYYY";

因此,整个代码应该如下所示:

代码语言:javascript
复制
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)

然而,我推荐前两个建议中的一个。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25122796

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档