如何从日期字符串添加 GMT

How to add GMT from date string

这是来自数据库的日期 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 对象时,它 returns 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);

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