1

我正在尝试解析以下日期:10:00 AM (UTC-08:00) on Sep 3, 2015使用 SimpleDateFormat。

我得到的最远的是:

message = "10:00 AM UTC-08:00";
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm a z");
sdf.parse(message);

一旦我添加了月份中的月份和日期,我得到了以下异常:(我试图删除括号和“开”,但我很想找到一个优雅地处理这个问题的解决方案)

message = "10:00 AM UTC-08:00 on Sep 3";
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm a z MMM d");
result = {java.text.ParseException@9787}Method threw 'java.text.ParseException' exception.
errorOffset = 12
detailMessage = "Unparseable date: "10:00 AM UTC-08:00 Jul""

很想知道我错过了什么。

4

2 回答 2

0

使用您的输入,例如:Jul 10:00 AM UTC-08:00

和格式如:MMM HH:mm az

于 2015-09-03T04:55:14.090 回答
0

我得出的结论是时区必须在末尾。

这些都有效:

String message = "10:00 AM UTC-08:00";
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm a z");

String message = "Jul";
SimpleDateFormat sdf = new SimpleDateFormat("MMM");

String message = "10:00 AM Jul UTC-08:00";
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm a MMM z");

String message = "UTC-08:00";
SimpleDateFormat sdf = new SimpleDateFormat("z");

然而这些没有:

String message = "10:00 AM UTC-08:00 Jul";
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm a z MMM");

String message = "UTC-08:00 10:00 AM";
SimpleDateFormat sdf = new SimpleDateFormat("z HH:mm a");

此外,我看到的所有模式示例最后都有时区。但是我找不到任何明确说明这一点的文档,所以如果您知道其他任何内容,请阅读本文的任何人分享。

于 2015-09-03T05:34:09.370 回答