Java-календарь выходных текущей недели

Java с использованием календаря, я хочу получить дату текущих выходных, любую быструю идею


person d-man    schedule 15.04.2011    source источник
comment
Я полагаю, вы имеете в виду в западном календаре? Выходные — четверг/пятница, а в некоторых местах — только воскресенье.   -  person Peter Lawrey    schedule 15.04.2011
comment
Текущий значит грядущий? или только что пройденный?   -  person Adeel Ansari    schedule 15.04.2011
comment
возможный дубликат примера java, чтобы получить все даты выходных в данном месяце   -  person Basil Bourque    schedule 28.09.2014


Ответы (6)


Попробуй это:

String dayNames[]={"lundi","mardi","mercredi","jeudi","vendredi","samedi","dimanche"};
        String nomthNames[]={"janvier","février","mars","avril","mai","juin","juillet","Août","septembre","octobre","novembre","decembre"};
        Calendar date = Calendar.getInstance();
        String dayName = dayNames[date.get(Calendar.DAY_OF_WEEK)];
        String dayMonth = nomthNames[date.get(Calendar.MONTH)];

        lblBonjour.setText("<html><b>Bonjour, "+new Functions().getNomPrenom(myID)+"</b><br>"+
                "Ajourd'hui "+dayName+" "+date.get(Calendar.DATE)+" "+dayMonth+" "+date.get(Calendar.YEAR)+"<br>"+
                "Heure locale: "+date.get(Calendar.HOUR_OF_DAY)+":"+date.get(Calendar.MINUTE) );
person Ali Ben Messaoud    schedule 15.04.2011

Время Джода

new DateTime().withDayOfWeek(DateTimeConstants.SATURDAY)
person lschin    schedule 15.04.2011
comment
К вашему сведению, проект Joda-Time сейчас находится в режиме обслуживания. Его команда рекомендует использовать классы java.time, встроенные в Java 8 и более поздние версии. Для Java 6 и 7 см. проект ThreeTen-Backport. - person Basil Bourque; 09.07.2017

Попробуй это. Это даст как начало, так и конец будних дней.

Calendar cal = Calendar.getInstance();
cal.set(Calendar.MONTH, cal.MONTH);
cal.set(Calendar.WEEK_OF_MONTH, cal.WEEK_OF_MONTH);
int weekStart = cal.getFirstDayOfWeek();
cal.set(Calendar.DAY_OF_WEEK,weekStart);
Date WeekStartDate=cal.getTime();
cal.set(Calendar.DAY_OF_WEEK,weekStart+7);
Date WeekEndDate=cal.getTime(
person ULLAS K    schedule 18.04.2012
comment
Сейчас устарело. Классы java.time вытесняют проблемный старый класс Calendar, показанный здесь. - person Basil Bourque; 09.07.2017

tl;dr

LocalDate.now( ZoneId.of( "Pacific/Auckland" ) )                      // Today, in specific time zone.
         .with( TemporalAdjusters.nextOrSame( DayOfWeek.SATURDAY ) )  // Next Saturday, or today if already Saturday.
         .plusDays( 1 )                                               // Sunday

Java.время

Современный подход использует классы java.time, которые заменяют проблемные плохо спроектированные классы Date и Calendar.

Текущая дата

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

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

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

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

Переезд на следующие выходные

Вы можете переходить от одной даты к другой, используя реализацию TemporalAdjuster. Некоторые удобные реализации представлены в TemporalAdjusters, например nextOrSame. Укажите день недели с помощью DayOfWeek объект enum. Обратите внимание, что DayOfWeek — это фактический объект, а не просто число или строка, что обеспечивает безопасность типов. и обеспечение допустимых значений.

LocalDate saturday = today.with( TemporalAdjusters.nextOrSame( DayOfWeek.SATURDAY ) ) ;
LocalDate sunday = saturday.plusDays( 1 ) ;

Если вы хотите провести те же или предыдущие выходные, позвоните в previousOrSame.


О java.time

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

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

Чтобы узнать больше, см. Учебное пособие по Oracle. И поищите множество примеров и пояснений в Stack Overflow. Спецификация: JSR 310.

Вы можете обмениваться объектами java.time непосредственно с вашей базой данных. Используйте драйвер JDBC, совместимый с JDBC 4.2 или более поздней версии. Нет необходимости в строках, нет необходимости в java.sql.* классах.

Где получить классы java.time?

  • Java SE 8, Java SE 9, and later
    • Built-in.
    • Часть стандартного Java API со встроенной реализацией.
    • Java 9 добавляет некоторые незначительные функции и исправления.
  • Java SE 6 and Java SE 7
    • Much of the java.time functionality is back-ported to Java 6 & 7 in ThreeTen-Backport.
  • Android

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

person Basil Bourque    schedule 09.07.2017

person    schedule
comment
Мне это нравится, потому что здесь нам все равно, какой сегодня день. +1 - person Adeel Ansari; 15.04.2011
comment
Сейчас устарел. Классы java.time вытесняют проблемный старый класс Calendar, показанный здесь. - person Basil Bourque; 09.07.2017

person    schedule
comment
Мне нравится, откуда ты родом. И использование всех DAY_OF_XXXXX. Потрясающий!! +1 - person Adeel Ansari; 15.04.2011
comment
Сейчас устарел. Классы java.time вытесняют проблемный старый класс Calendar, показанный здесь. - person Basil Bourque; 09.07.2017