2013-04-08 96 views
-2

我想将文本格式化为日期。以下是我有:Java简单日期格式

String pattern = "yyyy.MM.dd"; 
SimpleDateFormat sdf = new SimpleDateFormat(pattern); 
Date d=sdf.parse("12.1.5"); 

我得到:

java.lang.IllegalArgumentException异常:非法字符模式 'Y'

在这一点上。

我也尝试过使用ParsePosition以及“2012.01.05”。同样的错误。

如何解析这个字符串到日期?任何可选的方式?我错过了什么?

感谢,

+5

您是否使用'y'或'Y'? – 2013-04-08 19:48:24

+1

异常消息与您的代码不匹配。显然,12.1.5与yyyy.MM.dd不符。发布真实的代码和真正的异常消息,或者自己弄清楚,因为它应该很明显。 – 2013-04-08 19:50:09

+2

好:'String pattern =“yyyy.MM.dd”;'(小写“yyyy”)。问:'非法模式字符'Y''(大写字母“Y”)。问:你确定要发布确切的代码和确切的错误信息吗? – paulsm4 2013-04-08 19:51:11

回答

3

你给的代码工作正常 - 尽管事实是你声称你就会有一个4位数的年份,2位数的一个月,然后2位数日期,然后提供2-1-1很漂亮。

鉴于你得到的例外,我怀疑你的模式实际上是"YYYY.MM.dd"。这在Java 7中有效,其中Y表示“周年”,但它是而不是Java 6中有效,它不支持Y作为格式说明符 - 只有y

即使它是有效的,你真的不希望Y在这里 - 你只能指定星期几,当你还指定星期几和星期几,你不是在这里做。

粘着你实际上已经在你发布的代码得到了模式 - 但要确保你的数据实际上与它匹配...