2014-10-16 115 views
0

我从Web获取日期/时间字符串,格式为yyyy-mm-dd HH:MM:SS,格式为UTC。将字符串转换为GMT时区日期。 JAVA

我要创建一个Date对象,并打印GMT格式的日期对象,但我不希望改变,例如,如果我读的日期2014-10-22 09:00:00,那么它应显示为2014-10-22 09:00:00 GMT,而不是2014-10-22 13:30:00

我该怎么做?请建议我。 (FYI,目前,UTC时间是上午10点25分,印度当前时间是下午3点55分)。

我正在使用Jaxb解析器来解析XML。任何建议都会被邀请

+0

GMT不是格式 - 它实际上是一个时区。到目前为止,你所描述的几乎都是一个身份转换:''''''''''''''''''' }'...在发布的时候,UTC时间大约是16:34,*不是* 10:25 ... – 2014-10-16 16:36:15

+0

可能的重复[java日期格式](http://stackoverflow.com/questions/4772425/format-date-in-java) – msrd0 2014-10-16 16:36:57

回答

0

您可以使用SimpleDateFormat解析日期,然后将其重新格式化为不同的时区。

String toTimeZone = "GMT"; 
String fromTimeZone = "UTC"; 
String stingvalue = "2014-10-14 03:05:39"; 

SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); 
dateFormat.setTimeZone(TimeZone.getTimeZone(fromTimeZone)); 
Date parsedDate = dateFormat.parse(stingvalue); 

dateFormat.setTimeZone(TimeZone.getTimeZone(toTimeZone)); 

String newDate = dateFormat.format(parsedDate); 

说明

Java的Date类计算时间以毫秒计算,从1970年1月00:00:00.000 GMT。因此,您的日期属于时区中性。要在不同的时区获取日期,只需简单地格式化它不同的格式

+0

事情是我们有一个用来传递java.util.date变量的UI。因此我需要传递GMT时区中创建的Date变量。我无法将字符串传递到UI – 2014-10-16 16:53:01

+0

在这种情况下,您只需根据所需的格式创建一个SimpleDateFormat,设置时区并格式化日期。这应该够了吧。 – PeterK 2014-10-16 17:22:51