Java DateFormat - PullRequest
       1

Java DateFormat

4 голосов
/ 12 октября 2010

Я знаю, что 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 голосов
/ 12 октября 2010

m и D имеют собственный смысл в шаблоне SimpleDateFormat:
http://download.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html

m   Minute in hour
D   Day in year

Но вы не найдете Y в этой таблице.

6 голосов
/ 12 октября 2010

Вы изменяете не только регистр, вы меняете значение формата:

  • Y не существует.
  • M обозначает Месяц в году
  • m обозначает Минута в часе
  • D обозначает День в году
  • d означает День в месяце

DD-MMM-YYYY и dd-mm-YYYY не имеют значения.

Подробнеена SimpleDateFormat

5 голосов
/ 12 октября 2010

Это не "тупой", это просто неправильный шаблон.Взгляните на API: SimpleDateFormat - J2SE 6 также использование SimpleDateFormat обновлено в J2SE 7 и позволяет использовать Y сейчас SimpleDateFormat - J2SE 7

1 голос
/ 20 января 2014

используйте (строчные буквы) y для года.

M = month
m = minute
d = 1-30 (or 31)
D = 1-365
...