StringSriter的toString方法更改TimeZone

时间:2017-11-23 10:18:39

标签: java date timezone rss datetime-format

我正在使用Rome RSS编写RssFeed,并在调用StringWriter的toString方法后更改TimeZone。 我希望固定的Timezone和Time独立于运行代码的机器。

在调用toString方法之前,日期如下所示:

Mon Nov 10 00:00:00 CET 2014

调用toString方法后,它看起来像这样:

Sun, 09 Nov 2014 23:00:00 GMT

之前直接设置Locale时,它也不会改变任何内容
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();

1 个答案:

答案 0 :(得分:2)

toString()方法视为日期,时间和数字的信息。你不应该依赖输出,因为它可能是依赖于语言环境的(你已经发现了)。

我建议你使用DateFormat类来修改关于系统区域设置的日期格式

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
// optionally you can set your timezone
sdf.setTimeZone(TimeZone.getTimeZone("GMT"));
System.out.println(sdf.format(someDate));