Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/21: Рейтинг темы: голосов - 21, средняя оценка - 4.71
0 / 0 / 0
Регистрация: 08.07.2016
Сообщений: 31
1

Четная или нечетная неделя

27.11.2017, 23:49. Показов 3968. Ответов 7

Author24 — интернет-сервис помощи студентам
Здравствуйте. Не могу реализовать определение четности и нечетности недели.
Неделя с 1 сентября - нечетная неделя (т.е. является 1 неделей).
Как определить номер текущей недели? (А уже зная это, определить ее четность или нечетность).
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.11.2017, 23:49
Ответы с готовыми решениями:

Четная/Нечетная неделя
Как сделать чтобы у меня вывело информацию о четной/нечетной неделе в textView или как-нибудь в...

Четная нечетная неделя в месяце
Определить какая сейчас неделя - числитель или знаменатель. Числитель - 1.3.5 Знаменатель - 2.4...

Определить четная/нечетная функция
y=\frac{3x}{2}-\arccos \frac{1}{x} и обосновать почему так... я запнулась на arccos, это ведь...

Prolog - четная-нечетная длинна списка
Доброго времени суток, помогите решить задание. Определить два предикаты: четная длина (список) и...

7
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
28.11.2017, 06:28 2
https://stackoverflow.com/ques... m-any-date
1
746 / 493 / 285
Регистрация: 10.09.2015
Сообщений: 1,530
28.11.2017, 20:36 3
Лучший ответ Сообщение было отмечено kqu как решение

Решение

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
 
public class Task019 {
    public static void main(String[] args) throws ParseException {
        System.out.println(isEvenWeek(new SimpleDateFormat("dd.MM.yyyy").parse("5.09.2017")));
    }
 
    //Если считать, что первая неделя 1 сентября нечётная, то тогда 
    //метод возвращает true - если неделя чётная или false
    
    //если 1 сентября считать чётной, то тогда следует вот это return countWeeks % 2 != 0;
    //поменять на return countWeeks % 2 == 0;
    public static boolean isEvenWeek(Date date) throws ParseException {
        int month = date.getMonth() + 1;
        int year = month > 0 && month < 9 ? date.getYear() - 1 : date.getYear();
        Date startDate = new SimpleDateFormat("dd.MM.yyyy").parse("01.09." + year);
 
        int numberStartWeek = Integer.parseInt(new SimpleDateFormat("w").format(startDate));
        int numberNowWeek = Integer.parseInt(new SimpleDateFormat("w").format(date));
 
        int countWeeks = 0;
        if (month > 0 && month < 9) {
            Date lastDateYear = new SimpleDateFormat("dd.MM.yyyy").parse("31.12." + year);
            if (!(new SimpleDateFormat("E").format(lastDateYear).equals("Пн"))) {
                numberNowWeek--;
            }
            countWeeks = Integer.parseInt(new SimpleDateFormat("w").format(lastDateYear)) -
                    numberStartWeek + numberNowWeek;
        } else {
            countWeeks = numberNowWeek - numberStartWeek;
        }
        return countWeeks % 2 != 0;
    }
}
Добавлено через 23 секунды
Код не оптимальный, но работает. Возможно, можно сделать всё гораздо проще
1
1130 / 789 / 232
Регистрация: 12.04.2010
Сообщений: 2,012
29.11.2017, 01:20 4
Цитата Сообщение от kqu Посмотреть сообщение
Как определить номер текущей недели?
Зная дату в формате yyyy.mm.dd можно получить ее в виде числа миллисекунд с момента 01.01.1970. ( Метод GetTime класса Date.) Пример.
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import java.util.*;
import java.lang.*;
import java.io.*;
//import java.time.*;
import java.text.*;
 
class Ideone
{
    public static void main(String[] args) throws ParseException{
    
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd");
 
    // Пример. Чему равняется  getDate()   для 02 января 1970
    Date date0 = sdf.parse("1970.01.02");
    long hours = date0.getTime() / 1000 / 3600;
    System.out.println( " hours  :  " + hours );      // результат  24 
 
    Date date1, date2;
    date1 = sdf.parse("2017.09.01");
    date2 = sdf.parse("2017.11.28");
        
    long secs = (date2.getTime() - date1.getTime()) / 1000;    // интервал между  date1  и  date2  в секундах 
    long min = (date2.getTime() - date1.getTime() ) / 1000 / 60;  // интервал между  датами в минутах 
    long h = (date2.getTime() - date1.getTime() ) / 1000 / 3600;
    long days = (date2.getTime() - date1.getTime() ) / 1000 / 3600 / 24;
 
    System.out.println( "number of seconds :  " + secs ); // 7603200
    System.out.println( "number of days :  " + days );    // 88 
    }       
  
}
1
494 / 340 / 134
Регистрация: 14.06.2016
Сообщений: 658
29.11.2017, 14:43 5
Java
1
2
3
4
5
6
7
8
9
10
11
    public static boolean isEvenWeek(LocalDate date){
 
        LocalDate september1st = LocalDate.of(date.getYear(), Month.SEPTEMBER, 1);
 
        TemporalAdjuster adjuster = TemporalAdjusters.ofDateAdjuster(d ->
                september1st.minusYears(d.isBefore(september1st) ? 1 : 0)
                        .with(TemporalAdjusters.previousOrSame(DayOfWeek.MONDAY)));
 
        return date.with(adjuster).until(date, ChronoUnit.WEEKS) % 2 != 0;
 
    }
2
746 / 493 / 285
Регистрация: 10.09.2015
Сообщений: 1,530
29.11.2017, 16:33 6
(date.getYear() - получаем год на данный момент

А допустим, сейчас число 9 января 2018. А 1 сентября было 2017-го. Недели вроде как в универе их следование не обнуляется. Нужно проверять тогда по месяцу и если месяц от 0 до 8 включительно, то year - 1
1
494 / 340 / 134
Регистрация: 14.06.2016
Сообщений: 658
29.11.2017, 16:46 7
minusYears есть.
0
xoraxax
29.11.2017, 17:35     Четная или нечетная неделя
  #8

Не по теме:

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

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.11.2017, 17:35

Вывести строки по принципу: четная - нечетная
Друзья подскажите плиз ... Есть строка , она побита по 64 символа ...

Записать в массив такие элементы матрицы, что первая цифра четная, а вторая нечетная
Записать в массив С элементы массива М, заполненного двузначными числами, такие что первая цифра...

Количество n-значных натуральных чисел, где сумма цифр нечетная, а младшая цифра - четная (Pascal -> C++)
Подсчитать количество n- значных натуральных чисел, в которых сумма цифр нечетная, а младшая цифра...

Подсчитать количество n- значных натуральных чисел, в которых сумма цифр нечетная, а младшая цифра – четная
Подсчитать количество n- значных натуральных чисел, в которых сумма цифр нечетная, а младшая цифра...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru