Java Joda日期时间格式不正确
我有一个返回日期时间的函数Java Joda日期时间格式不正确,java,datetime,jodatime,Java,Datetime,Jodatime,我有一个返回日期时间的函数 public DateTime getCreated() { return jodatime; } 它以默认的ISO8601格式返回日期yyyy-MM-dd'HH:MM:ss.SSSZ。我想知道是否可以返回格式为yyyy-MM-dd HH:MM:ss z的日期时间 我正在做: public DateTime getCreated() { DateTimeFormatter dtfOut = DateTimeFormat.forPattern("MM-
public DateTime getCreated() {
return jodatime;
}
它以默认的ISO8601格式返回日期yyyy-MM-dd'HH:MM:ss.SSSZ
。我想知道是否可以返回格式为yyyy-MM-dd HH:MM:ss z
的日期时间
我正在做:
public DateTime getCreated() {
DateTimeFormatter dtfOut = DateTimeFormat.forPattern("MM-dd-yyyy HH:mm:ss z");
DateTime jodatime = dtfOut.parseDateTime(created.toString(dtfOut));
return jodatime;
}
每次返回时,它仍然以默认格式返回。这对我来说很奇怪,因为当我输出
created.toString(dtfOut)
时,它会以正确的格式输出日期。所有建议都会导致返回字符串,但我需要返回类型DateTime格式仅在您将日期/时间对象转换为字符串时适用;或者从字符串创建数据/时间时
换句话说:这是“按设计工作”
日期/时间对象对创建它的格式一无所知;或者会在某个时候被格式化为
意思是:当getCreated()返回的对象变成一个字符串时,格式开始起作用。当你时,提供你想要的格式;然后你会得到你想要的——而不是如果你不提供一个格式的话就会出现的“默认值” A
DateTime
没有格式。它的toString()
确实输出某种固定格式,但这主要是一种调试工具
如果希望方法返回格式化的日期字符串,那么它需要返回字符串
,而不是日期时间
:
private DateTimeFormatter dateTimeFormatter = DateTimeFormat.forPattern("MM-dd-yyyy HH:mm:ss z");
String getCreatedAsString() {
return dateTimeFormatter.print(created);
}
将格式与创建的分开可能会更干净。例如,如果getCreated()
是文件
中的一个方法,那么文件
不应该知道任何特定UI是如何显示它的
在演示层中执行任何格式设置
System.out.println("Created: " + dateTimeFormatter.print(file.getCreated());
DateTime
没有格式。它只代表一个日期和时间。格式是由DateTimeFormatter
通过转换为字符串来添加的。所以这是不可能的?只要在即将显示时格式化DateTime
。很好的一个。。。喜欢。加一;-)