【发布时间】:2014-02-10 19:01:34
【问题描述】:
所以我一直在研究一个简单的小方法,它会将String 作为Calendar 对象返回。
这是我所拥有的:
Calendar cal = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd HH:mm:ss Z yyyy", Locale.ENGLISH);
try {
cal.setTime(sdf.parse(this.getCreated_at()));
}
catch (ParseException e) {
e.printStackTrace();
}
return cal;
现在假设从this.getCreated_at()) 获得的String 始终采用所需格式,理论上这应该可以完美运行。
只有一个小问题。
假设this.getCreated_at()) 返回Mon Feb 10 18:52:54 +0000 2014。应该不是问题吧?格式正确,一切都好。
但是,当我有我的主要方法时,请执行以下操作:
SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd HH:mm:ss Z yyyy");
System.out.println(sdf.format(... ... ....stringToCalendar().getTime()));
它给了我以下输出:
ma feb 10 19:52:54 +0100 2014
您可能已经注意到,我的问题首先是时间不对。增加了一个小时。
其次,它将文本字段 Mon 和 Feb 翻译成 ma 和 feb,它们是挪威语的翻译,我现在正在编码的地方。
我需要将时间作为Calendar 对象返回给我,其方式与从this.getCreated_at())-string 中获得的完全相同。
我做错了什么?
谁能帮帮我?
顺便说一句,我来自挪威。那是 +01:00 标准偏移量。
【问题讨论】:
-
您用于显示值的 SimpleDateFormat 采用默认(挪威)语言环境和时区,而不是英语。因此它使用挪威时区以挪威语显示日期。
-
@PavelHoral 已更新。那只是我有点太仓促的错字。请原谅。
-
为什么您认为它显示的时间错误?
19:52:24 +01:00在我看来完全正确 - 它与18:52:24 +00:00相同,但显示为您的时区。