【发布时间】:2018-05-07 06:33:45
【问题描述】:
我正在使用 Rome RSS 编写 RssFeed,在调用 StringWriter 的 toString 方法后,它会更改 TimeZone。 我希望有一个固定的时区和时间,独立于运行代码的机器。
在调用 toString 方法之前,日期如下所示:
Mon Nov 10 00:00:00 CET 2014
调用 toString 方法后如下所示:
Sun, 09 Nov 2014 23:00:00 GMT
当我直接设置语言环境时,它也不会改变任何东西
Locale.setDefault(new Locale("en", "CA"));
String rssFeedString = writer.toString();
如何防止这种行为? 我无法直接使用 DateFormater,因为它在 ROME RSS API 中。
SyndFeedOutput output = new SyndFeedOutput();
output.output(feed, writer);
Locale.setDefault(new Locale("de", "DE"));
String rssFeedString = writer.toString();
writer.close();
【问题讨论】:
-
你的问题很不清楚。除此之外,您还没有明确告诉我们您正在格式化什么。我的 猜测 是它是 java.util.Date,但这还不清楚。请提供minimal reproducible example。
-
错误,没有。
StringWriter将字符累积到一个字符数组中,其toString()方法将这些字符作为String返回。它与时区没有任何关系。你的假设很荒谬。 -
github.com/rometools/rome/issues/188 这是解释的行为。
-
所以它与StringWriter本身无关。在应用程序启动时设置语言环境或使用系统属性怎么样?
-Duser.language=de -Duser.country=DE -Duser.timezone=Europe/Berlin -
在应用程序启动时由于某些原因无法启动,但我尝试了 Locale.setDefault(new Locale("de", "DE"));并没有改变任何东西。
标签: java date timezone rss datetime-format