Java 获取SimpleDataFormat返回错误答案

Java 获取SimpleDataFormat返回错误答案,java,timestamp,simpledateformat,Java,Timestamp,Simpledateformat,我需要将时间戳字符串转换为long。 这是我的输入字符串: 2016-08-10T11:24:57.182+0300 下面是我试图用于转换的代码: SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ss.sssZ"); try { Date date = simpleDateFormat.parse(timestamp);

我需要将时间戳字符串转换为long。
这是我的输入字符串:

2016-08-10T11:24:57.182+0300
下面是我试图用于转换的代码:

        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ss.sssZ");
        try {
            Date date = simpleDateFormat.parse(timestamp);

            long time = date.getTime();
        } catch (ParseException e) {
            e.printStackTrace();
        }
结果:
1470817622000

但当我检查这么长时间后,它会返回以下字符串:

10 august 2016 8:27:02 GMT
但这与输入字符串不同。

知道为什么会发生这种情况以及如何解决吗?

与输入字符串不同的意思是什么?您的输入是GMT+0300。您使用的java版本是什么?
Z
仅受java-7以上版本的支持@KevinEsche表示我们也可以在Java 6中使用Z。@安德烈·安东诺夫:您得到了正确的输出2016年8月10日8:27:02 GMT~=2016-08-10T11:24:57.182+0300(我使用了等效符号,因为有几分钟的差异)@Unknown,是的,看起来像。但是我需要根据时区转换时间。你说的与输入字符串不同是什么意思?您的输入是GMT+0300。您使用的java版本是什么?
Z
仅受java-7以上版本的支持@KevinEsche表示我们也可以在Java 6中使用Z。@安德烈·安东诺夫:您得到了正确的输出2016年8月10日8:27:02 GMT~=2016-08-10T11:24:57.182+0300(我使用了等效符号,因为有几分钟的差异)@Unknown,是的,看起来像。但我需要根据时区转换时间