Для этого есть класс!
java.time.MonthDay
Вместо того, чтобы бросать свои собственные, используйте класс MonthDay
, встроенный в Java 8 и более поздние версии. Для Java 6 и 7 используйте задний порт.
MonthDay[] mds = new MonthDay[5] ;
mds[0] = MonthDay.of( 7 , 22 ) ;
mds[1] = MonthDay.of( Month.AUGUST , 25 ) ;
mds[2] = MonthDay.of( Month.JUNE , 25 ) ;
mds[3] = MonthDay.of( Month.SEPTEMBER , 28 );
mds[4] = MonthDay.of( 9 , 5 ) ;
Arrays.sort(mdates);
Лучше использовать Коллекции Java в целом.
List< MonthDay > mds = new ArrayList<>() ;
mds.add( MonthDay.of( 7 , 22 ) ) ;
mds.add( MonthDay.of( Month.AUGUST , 25 ) ) ;
mds.add( MonthDay.of( Month.JUNE , 25 ) ) ;
mds.add( MonthDay.of( Month.SEPTEMBER , 28 ) ) ;
mds.add( MonthDay.of( 9 , 5 ) ) ;
Collections.sort( mds ) ;
Строка
Я хочу написать класс, чтобы я мог напечатать дату в формате дд / мм,
Чтобы узнать о написании класса, ознакомьтесь с исходным кодом в проекте OpenJDK .
Что касается генерации текста, представляющего этот класс дня месяца, просто вызовите toString
, чтобы сгенерировать значение в стандартном формате ISO 8601 . Я настоятельно рекомендую использовать эти стандартные форматы для регистрации, хранения и обмена значениями даты и времени в виде текста.
MonthDay.of( Month.JUNE , 25 ) )
.toString()
- 06-25
Для представления пользователю укажите желаемый формат с помощью DateTimeFormatter
класса. Для получения дополнительной информации ищите переполнение стека, так как об этом уже много раз говорилось.
DateTimeFormatter f = DateTimeFormatter.ofPattern( "dd/MM" ) ;
String output = mds.get( 0 ).format( f ) ; // Generate string in custom format.
25/06
Дамп на консоль.
System.out.println( "mds: " + mds ) ;
System.out.println( "mds.get( 0 ) = " + mds.get( 0 ) + " | output: " + output ) ;
См. Этот код, запущенный в режиме реального времени на IdeOne.com .
mds: [--06-25, --07-22, --08-25, --09-05, --09-28]
mds.get (0) = --06-25 | выход: 25/06
О java.time
Фреймворк java.time встроен в Java 8 и более поздние версии. Эти классы заменяют проблемные старые устаревшие классы даты и времени, такие как java.util.Date
, Calendar
, & SimpleDateFormat
.
Чтобы узнать больше, см. Oracle Tutorial . И поиск переполнения стека для многих примеров и объяснений. Спецификация JSR 310 .
Проект Joda-Time , теперь в режиме обслуживания , рекомендует перейти на классы java.time .
Вы можете обмениваться java.time объектами напрямую с вашей базой данных. Используйте драйвер JDBC , совместимый с JDBC 4.2 или более поздней версии. Нет необходимости в строках, нет необходимости в java.sql.*
классах.
Где получить классы java.time?
Проект ThreeTen-Extra расширяет java.time дополнительными классами. Этот проект является полигоном для возможных будущих дополнений к java.time. Здесь вы можете найти несколько полезных классов, таких как Interval
, YearWeek
, YearQuarter
и еще .