如何从日期字符串添加GMT

时间:2015-06-04 15:52:59

标签: 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

现在我希望这个日期在这种情况下自动添加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

2 个答案:

答案 0 :(得分:1)

解析DateTime对象时,它会返回Systems TimeZone中的DateTime对象。因此,dateTime对象已在GMT+5中 在dateTimez中,您只是使用相同的时区获得相同的DateTime。因此它不会改变。

<强>修正:

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

答案 1 :(得分:0)

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