Java DateFormat

时间:2010-10-12 11:47:28

标签: java date-format

我知道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 个答案:

答案 0 :(得分:12)

mD在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-YYYYdd-mm-YYYY格式无意义。

More info on SimpleDateFormat

答案 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