StringWriter的ToString方法更改时区



我正在编写带有罗马RSS的RSSFEED,并在调用字符串Wrriter的ToString方法后,它会更改时区。我想拥有一个固定的时区和时间独立于代码正在运行的机器。

在调用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,因为它在罗马RSS API中。

SyndFeedOutput output = new SyndFeedOutput();
output.output(feed, writer);
Locale.setDefault(new Locale("de", "DE"));
String rssFeedString = writer.toString();
writer.close();

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));

相关内容

  • 没有找到相关文章

最新更新