Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.06.2011, 13:06   #1
shurik_7866
Пользователь
 
Регистрация: 07.02.2007
Сообщений: 50
По умолчанию Определение дня недели по дате

Есть ли в Windows функция которая бы позволяла по дате определять день недели?
shurik_7866 вне форума Ответить с цитированием
Старый 20.06.2011, 13:17   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

в Delphi (в исходникам системной библиотеки SYSUTILS) это реализовано так:

Код:
type
{ Date and time record }

  TTimeStamp = record
    Time: Integer;      { Number of milliseconds since midnight }
    Date: Integer;      { One plus number of days since 1/1/0001 }
  end;

{ Seconds and milliseconds per day }
const
  SecsPerDay = 24 * 60 * 60;
  MSecsPerDay = SecsPerDay * 1000;

{ Days between 1/1/0001 and 12/31/1899 }

  DateDelta = 693594;

{ Date/time support routines }

const
  FMSecsPerDay: Single = MSecsPerDay;
  IMSecsPerDay: Integer = MSecsPerDay;

function DateTimeToTimeStamp(DateTime: TDateTime): TTimeStamp;
asm
        MOV     ECX,EAX
        FLD     DateTime
        FMUL    FMSecsPerDay
        SUB     ESP,8
        FISTP   QWORD PTR [ESP]
        FWAIT
        POP     EAX
        POP     EDX
        OR      EDX,EDX
        JNS     @@1
        NEG     EDX
        NEG     EAX
        SBB     EDX,0
        DIV     IMSecsPerDay
        NEG     EAX
        JMP     @@2
@@1:    DIV     IMSecsPerDay
@@2:    ADD     EAX,DateDelta
        MOV     [ECX].TTimeStamp.Time,EDX
        MOV     [ECX].TTimeStamp.Date,EAX
end;

function DayOfWeek(Date: TDateTime): Integer;
begin
  Result := DateTimeToTimeStamp(Date).Date mod 7 + 1;
end;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 20.06.2011, 13:55   #3
Мастак
Пользователь
 
Регистрация: 24.02.2010
Сообщений: 19
По умолчанию

Есть (WinApi,Kernel32.dll) ---> GetLocalTime
http://msdn.microsoft.com/en-us/libr...8VS.85%29.aspx
Возвращает данные в структуру SYSTEMTIME
http://msdn.microsoft.com/en-us/libr...=VS.85%29.aspx

Она вроде только текущее время и дату определяет.)

Последний раз редактировалось Мастак; 20.06.2011 в 14:03.
Мастак вне форума Ответить с цитированием
Старый 20.06.2011, 14:05   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Мастак, а с чего Вы взяли, что ему нужен день недели ТЕКУЩЕГО дня?!

Да и блин, судя по теме в разделе Дельфи, TC нужно банально в Delphi получить день недели!

и чего было в раздел WIN API лезть, не понимаю!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 21.06.2011, 12:16   #5
*PB*
Форумчанин
 
Регистрация: 11.08.2009
Сообщений: 558
По умолчанию

В PureBasic для этого есть функция DayOfWeek которая по указанной дате может вернуть день недели.
Могу сделать DLL из этой функции если кому-то нужно.
*PB* вне форума Ответить с цитированием
Старый 21.06.2011, 15:18   #6
Мастак
Пользователь
 
Регистрация: 24.02.2010
Сообщений: 19
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
Мастак, а с чего Вы взяли, что ему нужен день недели ТЕКУЩЕГО дня?!
Я ни с чего не взял. То что ты не потрудился уточнить то, что тебе надо не является ошибкой другого человека )
Мастак вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
определения дня недели по дате KoFeMaN Помощь студентам 17 27.10.2010 17:35
Извлечение из даты дня недели Kesha_pptp PHP 5 27.02.2010 22:21
Вывод дня недели по дате и наоборот (СИ) Xcess Помощь студентам 6 08.10.2009 14:02
Зависимость даты дней от дня недели valerij Microsoft Office Excel 16 18.06.2009 01:17