Java DateFormat

Ach*_*les 4 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)
Run Code Online (Sandbox Code Playgroud)

我的意思是我只是改变案子吧?但DateFormat真的那么愚蠢还是我做错了什么?或者它与我正在使用的Locale有关?

干杯

Nik*_*bak 12

m并且D在SimpleDateFormat模式中有自己的含义:http:
//download.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html

m   Minute in hour
D   Day in year
Run Code Online (Sandbox Code Playgroud)

但你不会Y在那张桌子里找到.


Jul*_*rau 6

您不是只更改案例,而是更改格式的含义:

  • Y 不存在.
  • M代表一年中的月份
  • m代表小时分钟
  • D代表一年中的一天
  • d代表一个月的日子

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

有关SimpleDateFormat的更多信息


che*_*vim 5

它不是"愚蠢的",它只是一种无效的模式.看看API: SimpleDateFormat - J2SE 6还在J2SE 7中更新了SimpleDateFormat用法并允许使用Y now SimpleDateFormat - J2SE 7