Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JodaTime:Datetime与+;00:00代替Z_Java_Jodatime - Fatal编程技术网

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));

    }

}