JodaTime - 在自己的时区显示时间

JodaTime - Display time in its own timezone

我的应用程序使用 JodaTime 来管理日期解析和格式设置。

我有这个时间戳:2018-07-24T15:30:00-07:00。 怎么能显示成3:30pm,不管用户在哪里?

以下代码将打印“3:30pm”:

DateTimeFormatter iso = ISODateTimeFormat.dateTimeParser().withOffsetParsed();
DateTime tsp = iso.parseDateTime("2018-07-24T15:30:00-07:00");

DateTimeFormatter out = DateTimeFormat.forPattern("h:mma").withLocale(Locale.ENGLISH);

System.out.println(tsp); // 2018-07-24T15:30:00.000-07:00
System.out.println(out.print(tsp).toLowerCase()); // 3:30pm

主要问题只是解析器不保留解析后的 -7:00 偏移量,而是将其转移到您的系统时区,除非您也调用 withOffsetParsed().