带时区的SimpleDateFormatter

时间:2015-04-26 13:56:14

标签: java simpledateformat

我想解析以下Dateformat

  

26.04.2015 17:00 CET

我使用了以下模式String

  

dd.MM.yyyy HH:mm z

我正在使用fopen。但是当我尝试解析给定的String时,我会收到java.text.SimpleDateFormat

我正在使用以下代码

ParseException

有人能说出我做错了吗?

3 个答案:

答案 0 :(得分:1)

使用小写z代替大写Z

您将拥有dd.MM.yyyy HH:mm z

SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy HH:mm z");
System.out.println(sdf.parse("26.04.2015 17:00 CET", new ParsePosition(0)));
  

2015年4月26日星期日中午12点00分

您可以看到演示here

您可以查看SimpleDateFormat here的完整参数说明。

答案 1 :(得分:0)

尝试SimpleDateFormat("dd.MM.yyyy HH:mm")

答案 2 :(得分:0)

Benjy Kessler的回答是可以的(我的upvote)。符号z用于解析时区名称和缩写,符号Z用于解析偏移。

唯一仍缺少的是语言环境。你必须将语言环境设置为英语,因为" CET"是"中欧时间"的英文缩写。在德语中它将是" MEZ"代替。

所以请试试表达式

SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy HH:mm z", Locale.ENGLISH);

顺便说一句,你的输入似乎不一致,因为你的日期是在四月,但是" CET"建议冬季时间(而欧盟欧盟已经转为夏季时间)。我希望你的格式对象足够宽松。