我知道Java Date Time不是一个很好的前进方式,但我只是好奇发生了什么:
为什么以下行:
DateFormat df = new SimpleDateFormat("dd-MMM-yyyy", Locale.US)
不会产生任何错误,以下几行:
DateFormat df = new SimpleDateFormat("DD-MMM-YYYY", Locale.US)
DateFormat df = new SimpleDateFormat("dd-mm-YYYY", Locale.US)
抛出以下异常:
Exception in thread "main" java.lang.IllegalArgumentException: Illegal pattern character 'Y'
at java.text.SimpleDateFormat.compile(SimpleDateFormat.java:769)
at java.text.SimpleDateFormat.initialize(SimpleDateFormat.java:576)
at java.text.SimpleDateFormat.<init>(SimpleDateFormat.java:501)
at testing.MySchedule.main(MySchedule.java:18)
我的意思是我只是改变了案子吗?但DateFormat真的那么愚蠢还是我做错了什么?或者它与我正在使用的语言环境有关?
干杯
答案 0 :(得分:12)
m
和D
在SimpleDateFormat模式中有其自己的含义:
http://download.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html
m Minute in hour
D Day in year
但是你不会在该表中找到Y
。
答案 1 :(得分:6)
您不是只更改案例,而是更改格式的含义:
Y
不存在。M
代表年月 m
代表分钟 D
代表一年中的一天 d
代表日期 DD-MMM-YYYY
和dd-mm-YYYY
格式无意义。
答案 2 :(得分:5)
这不是“愚蠢”,它只是一种无效的模式。看看API: SimpleDateFormat - J2SE 6还在J2SE 7中更新了SimpleDateFormat用法并允许现在使用Y SimpleDateFormat - J2SE 7
答案 3 :(得分:1)
年份使用(小写)y。
M = month
m = minute
d = 1-30 (or 31)
D = 1-365