Joda DateTime 格式不正确
Joda DateTime improper format
我有一个函数 returns DateTime
public DateTime getCreated() {
return jodatime;
}
这是return默认 ISO8601 格式的日期 yyyy-MM-dd'T'HH:mm:ss.SSSZ
。我想知道我是否可以 return 格式为 yyyy-MM-dd HH:mm:ss z
的 DateTime。
我在做:
public DateTime getCreated() {
DateTimeFormatter dtfOut = DateTimeFormat.forPattern("MM-dd-yyyy HH:mm:ss z");
DateTime jodatime = dtfOut.parseDateTime(created.toString(dtfOut));
return jodatime;
}
每次return它仍然return使用默认格式。这对我来说很奇怪,因为当我输出 created.toString(dtfOut)
时,它会以正确的格式输出日期。所有建议都会导致 returning 字符串,但我需要 return 键入 DateTime
Formats 仅在您 convert 您的 date/time 对象为字符串时适用;或者当您从 字符串创建 data/time 时。
换句话说:这是"works as designed"。
date/time 对象对创建它的格式一无所知;或者在某些时候会被格式化为!
含义:当getCreated()返回的对象变成字符串时,然后格式开始发挥作用。当您 然后 提供您想要的格式时; 然后 你会得到你想要的东西 - 而不是 "default" 如果你不提供格式就会出现!
A DateTime
没有 格式。它的 toString()
确实输出某种固定的格式,但这主要是一个调试工具。
如果你想让你的方法return一个格式化的日期字符串,那么它需要return一个String
,而不是DateTime
:
private DateTimeFormatter dateTimeFormatter = DateTimeFormat.forPattern("MM-dd-yyyy HH:mm:ss z");
String getCreatedAsString() {
return dateTimeFormatter.print(created);
}
将格式化与获取 created
分开可能更简洁。例如,如果 getCreated()
是 File
中的一个方法,那么 File
应该不知道任何特定的 UI 是如何显示它的。
在您的表示层中进行任何格式设置。
System.out.println("Created: " + dateTimeFormatter.print(file.getCreated());
我有一个函数 returns DateTime
public DateTime getCreated() {
return jodatime;
}
这是return默认 ISO8601 格式的日期 yyyy-MM-dd'T'HH:mm:ss.SSSZ
。我想知道我是否可以 return 格式为 yyyy-MM-dd HH:mm:ss z
的 DateTime。
我在做:
public DateTime getCreated() {
DateTimeFormatter dtfOut = DateTimeFormat.forPattern("MM-dd-yyyy HH:mm:ss z");
DateTime jodatime = dtfOut.parseDateTime(created.toString(dtfOut));
return jodatime;
}
每次return它仍然return使用默认格式。这对我来说很奇怪,因为当我输出 created.toString(dtfOut)
时,它会以正确的格式输出日期。所有建议都会导致 returning 字符串,但我需要 return 键入 DateTime
Formats 仅在您 convert 您的 date/time 对象为字符串时适用;或者当您从 字符串创建 data/time 时。
换句话说:这是"works as designed"。
date/time 对象对创建它的格式一无所知;或者在某些时候会被格式化为!
含义:当getCreated()返回的对象变成字符串时,然后格式开始发挥作用。当您 然后 提供您想要的格式时; 然后 你会得到你想要的东西 - 而不是 "default" 如果你不提供格式就会出现!
A DateTime
没有 格式。它的 toString()
确实输出某种固定的格式,但这主要是一个调试工具。
如果你想让你的方法return一个格式化的日期字符串,那么它需要return一个String
,而不是DateTime
:
private DateTimeFormatter dateTimeFormatter = DateTimeFormat.forPattern("MM-dd-yyyy HH:mm:ss z");
String getCreatedAsString() {
return dateTimeFormatter.print(created);
}
将格式化与获取 created
分开可能更简洁。例如,如果 getCreated()
是 File
中的一个方法,那么 File
应该不知道任何特定的 UI 是如何显示它的。
在您的表示层中进行任何格式设置。
System.out.println("Created: " + dateTimeFormatter.print(file.getCreated());