Задачка

Feb 09, 2020 19:04

Друзья-прогеры, хелп, вы знаете алгоритм нахождения даты N-ого дня недели в M-ной неделе произвольного месяца? Например, когда второе воскресенье февраля 2020-го года или последний четверг марта 2021-го?

программизмы, рабочее

Leave a comment

Comments 6

maurisio February 9 2020, 19:41:30 UTC
А если прямо в лоб делать? Берешь любой понедельник в качестве ноль-пункта, считаешь его юлианскую дату, берешь 1 февраля 2020, считаешь его юлианскую дату, разница двух юлианских, сколько в ней целых семерок(недель), остаток - это день недели 01.02.2020, а затем составляешь календарь на февраль зная день недели 1 февраля, и внутри месяца уже пронумеровать недели и т.д.

Reply

tigerofsiberia February 9 2020, 20:13:42 UTC
Да, я примерно так и хочу, только вся разница, что у меня по-американски недели с воскресенья начинаются.

Reply


black_eric February 9 2020, 20:19:02 UTC
Есть же готовые функции. Вам под какой язык?

Reply

tigerofsiberia February 9 2020, 20:27:42 UTC
Java 8

Reply

black_eric February 10 2020, 07:12:56 UTC
SimpleDateFormat sdf = new SimpleDateFormat("MM dd yyyy");
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.WEEK_OF_YEAR, 17);
calendar.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
System.out.println(sdf.format(calendar.getTime()));

Кажется так

Reply

tigerofsiberia February 10 2020, 07:56:17 UTC
Я не совсем верно сформулировал задачу: не M-ная неделя месяца, а M-ный заданный день недели в месяце. То есть, первый понедельник марта, а не понедельник первой недели марта. Поэтому поля типа WEEK_OF_YEAR, WEEK_OF_MONTH не подходят, они-то высчитывают недели. Я в итоге реализовал вариант предложенного выше алгоритма прямого нахождения, с использованием для очевидности кода процедур из LocalDateTime.

Reply


Leave a comment

Up