Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.94/18: Рейтинг темы: голосов - 18, средняя оценка - 4.94
 Аватар для XoPToN
1 / 2 / 0
Регистрация: 20.01.2017
Сообщений: 52

Как определить день недели по введенной дате

06.09.2017, 15:59. Показов 3389. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
У меня есть ,например,значение дня,месяца и года.
C++
1
int day=5,month=11,year=2000
Можно ли с помощью SystemTimeToFileTime и FileTimeToSystemTime определить день недели?
Если да,то можно понятный пример привести?
Если нет,то каким образом можно это сделать?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
06.09.2017, 15:59
Ответы с готовыми решениями:

Определить день недели
Привет всем. Кто поможет с написанием кода для определения, что сейчас воскресенье и первые числа нового месяца. К примеру в марте...

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

Определить день недели по введенной дате
Цель задачи: Вводим дату и программа показывает день недели. var a,b,c: integer; p,v,s,f: real; begin

7
Эксперт С++
 Аватар для _lunar_
3701 / 2836 / 451
Регистрация: 03.05.2011
Сообщений: 5,193
Записей в блоге: 21
07.09.2017, 00:58
Цитата Сообщение от XoPToN Посмотреть сообщение
определить день недели?
C++
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
37
#include <ctime>
#include <iostream>
 
int main() {
    int day = 5, month = 11, year = 2000;
    std::tm time_in = { 0, 0, 0, month, day, year - 1900 };
 
    std::time_t time_temp = std::mktime(&time_in);
    const std::tm * time_out = std::localtime(&time_temp);
 
    switch (time_out->tm_wday) {
    case 0:
        std::cout << "Sunday" << std::endl;
        break;
    case 1:
        std::cout << "Monday" << std::endl;
        break;
    case 2:
        std::cout << "Tuesday" << std::endl;
        break;
    case 3:
        std::cout << "Wednesday" << std::endl;
        break;
    case 4:
        std::cout << "Thursday" << std::endl;
        break;
    case 5:
        std::cout << "Friday" << std::endl;
        break;
    case 6:
        std::cout << "Saturday" << std::endl;
        break;
    }
 
    std::cin.get();
    return 0;
}
1
 Аватар для XoPToN
1 / 2 / 0
Регистрация: 20.01.2017
Сообщений: 52
07.09.2017, 15:05  [ТС]
К сожалению, ваш вариант неверно показывает дни недели. Но я нашел функцию,которая отлично работает ,но все равно спасибо,что вы откликнулись
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
int WeekDay(int iYear,int iMonth,int iDay)
{
   // Month:  March   -  3 ... December - 12 of Current  Year
   //         January - 13,    February - 14 of Previous Year
   if (iMonth < 3) 
   { 
      // If January or February, adjust Month and Year
      iMonth += 12;
      --iYear;
   }
 
   int   N1 = (26 * (iMonth + 1)) / 10;    // Month Shift
   int   N2 = (125 * iYear) / 100;         // Leap Correction
 
   int   N3 = iDay + N1 + N2 - (iYear / 100) + (iYear / 400) - 1;
 
   return N3 % 7;
}
0
Эксперт С++
 Аватар для _lunar_
3701 / 2836 / 451
Регистрация: 03.05.2011
Сообщений: 5,193
Записей в блоге: 21
07.09.2017, 21:09
Цитата Сообщение от XoPToN Посмотреть сообщение
ваш вариант неверно показывает дни недели
что я делаю не так
1
322 / 174 / 78
Регистрация: 09.10.2014
Сообщений: 809
07.09.2017, 21:29
Цитата Сообщение от _lunar_ Посмотреть сообщение
что я делаю не так
Попробуй с текущей датой)
0
Эксперт С++
 Аватар для _lunar_
3701 / 2836 / 451
Регистрация: 03.05.2011
Сообщений: 5,193
Записей в блоге: 21
07.09.2017, 21:38
lArtl,
вы строку то с датой хоть поменяли?
C++
1
int day = 7, month = 9, year = 2017;
Sunday быть не может.
Должно показать среду, но это особенность американского исчисления недели
C++
1
int tm_wday;  // days since Sunday - [0, 6]
во-первых отсчет начинается с 0, во-вторых неделя начинается с воскресенья.
поправьте перебор switch как надо.
1
322 / 174 / 78
Регистрация: 09.10.2014
Сообщений: 809
07.09.2017, 21:43
Цитата Сообщение от _lunar_ Посмотреть сообщение
во-первых отсчет начинается с 0, во-вторых неделя начинается с воскресенья.
поправьте перебор switch как надо.
Все сошлось.
0
1130 / 789 / 232
Регистрация: 12.04.2010
Сообщений: 2,012
10.09.2017, 14:16
Цитата Сообщение от _lunar_ Посмотреть сообщение
что я делаю не так
C++
1
2
3
    int day = 5, month = 11, year = 2000;    //    11,  it is December 
    std::tm time_in = { 0, 0, 0,   day,   month,   year - 1900 };
    //std::tm time_in = { 0, 0, 0, month, day, year - 1900 };   // error
C++
1
2
3
4
5
6
7
8
9
10
11
struct tm {
        int tm_sec;     /* seconds after the minute - [0,59] */
        int tm_min;     /* minutes after the hour - [0,59] */
        int tm_hour;    /* hours since midnight - [0,23] */
        int tm_mday;    /* day of the month - [1,31] */
        int tm_mon;     /* months since January - [0,11] */
        int tm_year;    /* years since 1900 */
        int tm_wday;    /* days since Sunday - [0,6] */
        int tm_yday;    /* days since January 1 - [0,365] */
        int tm_isdst;   /* daylight savings time flag */
        };
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
10.09.2017, 14:16
Помогаю со студенческими работами здесь

По введенной дате определить день недели
всем привет, начинаю учиться писать программки, вот получила задачу,нужно написать программу где юзер спрашивает день недели, ну и ответ...

По введенной дате рождения определить день недели
Используя оператор выбора Select Case: По введенной дате рождения сообщить пользователю, в какой день недели он родился (понедельник или...

По введенной дате (число, месяц и год) определить день недели
1. По введенной дате (число, месяц и год) определить день недели. Основную часть программ оформить в виде подпрограммы, у которой...

Вывести день недели, по введенной дате (type, record)
Дано: type number = 1..31; month = 1..12; year = 1..2050; data = record n: number; ...

По текущей дате и дню недели определить день недели с такой же датой заданного года
По текущей дате и дню недели определить день недели с такой же датой заданного года. (C++ )


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
Программный отбор значений справочника
Maks 21.03.2026
Установка программного отбора значений справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит предопределенное значение перечислений. Процедура. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru