编辑:由于一些看似混乱的情况,让我澄清一下。如果可能的话,我希望解决方案在 freemarker 中完成,而不是在 java 中完成。
我有一个日期时间字符串,如下所示:2019-03-12T16:02:00+02:00
我必须以特定的格式来显示它,如下所示:EEEE dd. MMMM yyyy HH:mm
但是,如果我这样做,它会显示时间14:02
代替16:02
。
它将日期时间转换为 UTC,然后显示它。如何让它按原样显示小时和分钟,只是末尾没有“utc”?或者任何时区。Tuesday 12. March 2019 16:02
是期望的输出。
我不知道收件人的时区。
Using iso_local_nz
给我的是美国标准显示,这仍然是错误的。
先感谢您。
我已经尝试了几乎所有我能想到的:https://freemarker.apache.org/docs/ref_builtins_date.html#ref_builtin_date_iso https://freemarker.apache.org/docs/ref_builtins_date.html#ref_builtin_date_iso.
departureScheduled?datetime.iso?string("EEEE dd. MMMM yyyy HH:mmz")?capitalize
我使用的配置如下:
config = new Configuration(Configuration.VERSION_2_3_28);
config.setTemplateLoader(new S3TemplateLoader());
config.setDefaultEncoding("UTF-8");
config.setLocalizedLookup(false);
config.setLocale(Locale.forLanguageTag("NO"));
config.setTemplateExceptionHandler(TemplateExceptionHandler.RETHROW_HANDLER);
被输入的字符串是我上面提供的字符串。
使用类java.time.OffsetDateTime
为了处理偏移:
public static void main(String[] args) {
String t = "2019-03-12T16:02:00+02:00";
OffsetDateTime odt = OffsetDateTime.parse(t);
System.out.println(odt.format(DateTimeFormatter.ofPattern("EEEE dd. MMMM yyyy HH:mm")));
}
这打印Dienstag 12. März 2019 16:02
,翻译取决于您的系统默认Locale
.
请注意,正确的代码不会产生您想要的输出,因为 2019 年 3 月 12 日是星期二而不是星期一。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)