Как отобразить дату текущего месяца с месяцем и годом на Java? - PullRequest
2 голосов
/ 30 марта 2012

Как динамически отображать в Java дату, месяц и год определенного месяца в цикле for?

Ответы [ 2 ]

0 голосов
/ 23 марта 2017

Использование java.time

В другом ответе используются проблемные старые классы даты и времени, которые теперь унаследованы и заменены классами java.time.

LocalDate

Класс LocalDate представляет значение только для даты без времени суток и без часового пояса.

Часовой пояс

Часовой пояс имеет решающее значение при определении даты. В любой момент времени дата меняется по всему земному шару в зависимости от зоны. Например, через несколько минут после полуночи в Париж Франция - это новый день, а еще «вчера» в Монреаль Квебек .

Укажите собственное имя часового пояса в формате continent/region, например America/Montreal, Africa/Casablanca или Pacific/Auckland. Никогда не используйте 3-4-буквенное сокращение, такое как EST или IST, поскольку они не истинные часовые пояса, не стандартизированы и даже не уникальны (!).

ZoneId z = ZoneId.of( "America/Montreal" );
LocalDate today = LocalDate.now( z );

YearMonth

Мы заботимся о целый месяц. Поэтому используйте объект YearMonth, чтобы представить это.

YearMonth ym = YearMonth.from( today );

Получите первое число месяца.

LocalDate localDate = ym.atDay( 1 );

Цикл, увеличивающий дату на один день за раз, до конца месяца. Мы можем проверить этот факт, посмотрев, имеет ли каждая увеличенная дата такой же YearMonth, как сегодня. Соберите каждую дату в List.

List<LocalDate> dates = new ArrayList<>( 31 );  // Collect each date. We know 31 is maximum number of days in any month, so set initial capacity.
while( YearMonth.of( localDate).equals( ym ) ) {  // While in the same year-month.
    dates.add( localDate ); // Collect each incremented `LocalDate`.
    System.out.println( localDate );
    // Set up next loop.
    localDate = localDate.plusDays( 1 );
}

О java.time

Фреймворк java.time встроен в Java 8 и более поздние версии. Эти классы вытесняют проблемные старые устаревшие классы даты и времени, такие как java.util.Date, Calendar и & SimpleDateFormat.

Проект Joda-Time , который теперь находится в режиме обслуживания , рекомендует перейти на классы java.time .

Чтобы узнать больше, см. Oracle Tutorial . И поиск переполнения стека для многих примеров и объяснений. Спецификация JSR 310 .

Где взять классы java.time?

Проект ThreeTen-Extra расширяет java.time дополнительными классами. Этот проект является полигоном для возможных будущих дополнений к java.time. Здесь вы можете найти несколько полезных классов, таких как Interval, YearWeek, YearQuarter и more .

0 голосов
/ 31 марта 2012

Это кратко демонстрирует некоторые основы классов SimpleDateFormat и GregorianCalendar в Java. Это было лучшее, что я мог сделать, основываясь на твоем вопросе.

import java.text.SimpleDateFormat;
import java.util.GregorianCalendar;

public class Main {
    public static void main(String[] args) {
        int year = 2012;
        int month = 4;

        /* The format string for how the dates will be printed. */
        SimpleDateFormat format = new SimpleDateFormat("dd-MM-yyyy");

        /* Create a calendar for the first of the month. */
        GregorianCalendar calendar = new GregorianCalendar(year, month, 1);

        /* Loop through the entire month, day by day. */
        while (calendar.get(GregorianCalendar.MONTH) == month) {
            String dateString = format.format(calendar.getTime());
            System.out.println(dateString);

            calendar.add(GregorianCalendar.DATE, 1);
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...