Java JodaTime:Datetime与+;00:00代替Z
你好,我和乔达时间有点问题。我的应用程序与远程服务对话,此服务与此字符串有问题:Java JodaTime:Datetime与+;00:00代替Z,java,jodatime,Java,Jodatime,你好,我和乔达时间有点问题。我的应用程序与远程服务对话,此服务与此字符串有问题: 2015-04-14T09:29:02.485Z 所以我用同样的方法测试了它(见Z): 这是有效的。那么,我怎样才能轻松地删除Z并使用00:00,什么是完全相同的呢?我不想编写自己的格式化程序,因为它必须是ISO8601。有没有一个简单的方法可以做到这一点 我有以下代码: ... public void myMethod(Datetime time){ remoteCall(time.toString);
2015-04-14T09:29:02.485Z
所以我用同样的方法测试了它(见Z):
这是有效的。那么,我怎样才能轻松地删除Z并使用00:00,什么是完全相同的呢?我不想编写自己的格式化程序,因为它必须是ISO8601。有没有一个简单的方法可以做到这一点
我有以下代码:
...
public void myMethod(Datetime time){
remoteCall(time.toString);
}
...
如果要将Z替换为+00:00,可以尝试以下操作,我重复使用了上面的代码:
public void myMethod(Datetime time){
/**
* this will return in this format 2015-04-14T09:29:02.485+00:00
* assumption is that time in UTC Timezone
*/
remoteCall(time.toString("yyyy-MM-dd'T'HH:mm:ss.SSSZZ"));
}
希望这有帮助!干杯。:) 使用Joda时间,我们可以实现这一点。下面的小程序可以帮助你
import org.joda.time.DateTime;
import org.joda.time.DateTimeZone;
import org.joda.time.format.DateTimeFormat;
import org.joda.time.format.DateTimeFormatter;
public class TestTimezone {
public static void main(String[] args) {
DateTime jodatime = new DateTime(DateTimeZone.UTC);
DateTimeFormatter dtfOut = DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ss.SSSSSSSSSZZ");
System.out.println(dtfOut.print(jodatime));
}
}
仅供参考:
Z
适用于ISO8601,两者都适用于ISO8601,如果您使用JSR-310(内置于Java 8,后端口为Java 7),您可以轻松控制此时区格式。我知道两者都是有效的,但远程服务在最后有一些Z错误,因此我想尝试+00:00的解决方法。为什么不想使用[DateTimeFormatterBuilder](,boolean,int,int))?您可以使用它来定义ISO-8601的变体(请记住,指定的格式不止一种)。或者您只需使用String.replace(…)
。我想使用iso8601,但我认为有一些“setZeroInsteadZ”(true)'方法。最后,要求应用程序完全兼容iso8601。如果我使用自定义格式,则情况并非如此,尤其是如果我们更改远程服务或远程服务将被修复。
import org.joda.time.DateTime;
import org.joda.time.DateTimeZone;
import org.joda.time.format.DateTimeFormat;
import org.joda.time.format.DateTimeFormatter;
public class TestTimezone {
public static void main(String[] args) {
DateTime jodatime = new DateTime(DateTimeZone.UTC);
DateTimeFormatter dtfOut = DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ss.SSSSSSSSSZZ");
System.out.println(dtfOut.print(jodatime));
}
}