Java DateFormat

4
我知道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难道真的那么愚蠢吗?还是我做错了什么?或者这与我使用的区域设置有关?

谢谢!

4个回答

12

6
你不仅改变了大小写,还改变了格式的含义:
  • Y 不存在。
  • M 表示 年份中的月份
  • m 表示 小时中的分钟数
  • D 表示 年份中的日期
  • d 表示 月份中的日期

DD-MMM-YYYYdd-mm-YYYY 格式没有意义。

有关 SimpleDateFormat 的更多信息


5

http://download-llnw.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html#year - jmj
特别地,“A”到“Z”和“a”到“z”的非引号字母被解释为模式字母。 “Y”不是允许的模式。 - Ben Lings

1
使用小写字母 y 表示年份。
M = month
m = minute
d = 1-30 (or 31)
D = 1-365

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接