Java 如何从日期字符串添加GMT

Java 如何从日期字符串添加GMT,java,jodatime,Java,Jodatime,这是来自db的日期 2015-06-0403:34:38 我已经像这样解析了它 DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyy-MM-ddHH:mm:ss"); DateTime dateTime = formatter.withOffsetParsed().parseDateTime("2015-06-0403:34:38"); 结果:2015-06-04T03:34:38.000+05:00 现在,我希望这个日期自

这是来自db的日期 2015-06-0403:34:38

我已经像这样解析了它

DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyy-MM-ddHH:mm:ss");
DateTime dateTime = formatter.withOffsetParsed().parseDateTime("2015-06-0403:34:38");
结果:
2015-06-04T03:34:38.000+05:00

现在,我希望这个日期自动添加GMT,在这种情况下为+5 所以日期应该是
2015-06-04 08:34:38

我尝试过这样添加时区

java.util.Calendar now = java.util.Calendar.getInstance();
java.util.TimeZone timeZone = now.getTimeZone();
DateTimeZone dtZone = DateTimeZone.forID(timeZone.getID());
DateTime dateTimez = dateTime.toDateTime(dtZone);
结果:2015-06-04T03:34:38.000+05:00(哪个错误)


我使用的是
JodaTime

当解析DateTime对象时,它会返回系统时区中的DateTime对象。因此,您的
dateTime
对象已在
GMT+5

dateTimez
中,您只需使用相同的时区获得相同的DateTime。因此它不会改变

修复:

dateTime = dateTime.withZoneRetainFields(org.joda.time.DateTimeZone) // pass the Timezone of the DB
DateTime dateTimez = dateTime.toDateTime(dtZone);

看看如何获取timeDiff。使用此答案,您可以构建一种方法,根据所需时区添加或删除小时。

来自db的日期以utc为单位