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
。很好的一个。。。喜欢。加一;-)