Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Вопрос по датам


календарь1 ©   (2005-09-13 16:46:00) 

Как мне узнать количество определенных дней недели (пятниц, например)в определенном месяцекакого-то года? Как определить, что такое-то число являеться таким то днем недели (например, 2-ым вторником) определенно месяца определенного года?
Поможите с алгоритмами. Не могу сам придумать...


KilkennyCat   (2005-09-13 22:29:00) [1]

есть


Джо   (2005-09-13 19:15:00) [2]


>  [18] календарь1   (13.09.05 19:05)
> № 5 :) а в Д-7 такое есть?

В Делфи 7 - не знаю. У меня 6 и 2005. С вероятностью 99% рискну утверждать, что и в 7 есть :)


календарь1   (2005-09-13 19:05:00) [3]


> П.С. Вообще-то, в таких случаях принято писать номер своей
> версии Делфи.

№ 5 :) а в Д-7 такое есть?


Джо   (2005-09-13 18:52:00) [4]


>  [11] календарь1   (13.09.05 18:29)
> Нашел модуль. WeekOfTheYear там нету.

Вот объявления нескольких функций из этого модуля (D6, D2005):

{ This of that functions }

function MonthOfTheYear(const AValue: TDateTime): Word;
function WeekOfTheYear(const AValue: TDateTime): Word; overload;      {ISO 8601}
function WeekOfTheYear(const AValue: TDateTime;                       {ISO 8601}
 var AYear: Word): Word; overload;
function DayOfTheYear(const AValue: TDateTime): Word;
function HourOfTheYear(const AValue: TDateTime): Word;
function MinuteOfTheYear(const AValue: TDateTime): LongWord;
function SecondOfTheYear(const AValue: TDateTime): LongWord;
function MilliSecondOfTheYear(const AValue: TDateTime): Int64;

function WeekOfTheMonth(const AValue: TDateTime): Word; overload;    {ISO 8601x}
function WeekOfTheMonth(const AValue: TDateTime; var AYear,          {ISO 8601x}
 AMonth: Word): Word; overload;
function DayOfTheMonth(const AValue: TDateTime): Word;
function HourOfTheMonth(const AValue: TDateTime): Word;
function MinuteOfTheMonth(const AValue: TDateTime): Word;
function SecondOfTheMonth(const AValue: TDateTime): LongWord;
function MilliSecondOfTheMonth(const AValue: TDateTime): LongWord;

function DayOfTheWeek(const AValue: TDateTime): Word;                 {ISO 8601}
function HourOfTheWeek(const AValue: TDateTime): Word;                {ISO 8601}
function MinuteOfTheWeek(const AValue: TDateTime): Word;              {ISO 8601}
function SecondOfTheWeek(const AValue: TDateTime): LongWord;          {ISO 8601}
function MilliSecondOfTheWeek(const AValue: TDateTime): LongWord;     {ISO 8601}

function HourOfTheDay(const AValue: TDateTime): Word;
function MinuteOfTheDay(const AValue: TDateTime): Word;
function SecondOfTheDay(const AValue: TDateTime): LongWord;
function MilliSecondOfTheDay(const AValue: TDateTime): LongWord;

function MinuteOfTheHour(const AValue: TDateTime): Word;
function SecondOfTheHour(const AValue: TDateTime): Word;
function MilliSecondOfTheHour(const AValue: TDateTime): LongWord;

function SecondOfTheMinute(const AValue: TDateTime): Word;
function MilliSecondOfTheMinute(const AValue: TDateTime): LongWord;

function MilliSecondOfTheSecond(const AValue: TDateTime): Word;

Я их сам придумал? ;)
П.С. Вообще-то, в таких случаях принято писать номер своей версии Делфи.


Antonn   (2005-09-13 18:43:00) [5]

Antonn ©   (13.09.05 18:43) [15]
соду

коде
:)


Antonn   (2005-09-13 18:43:00) [6]

календарь1   (13.09.05 18:42) [14]
зажимаешь ctrl и щелкаешь на название функций в соду [6], копируешь себе, лишнее убираешь.


календарь1   (2005-09-13 18:42:00) [7]

Ну поможите! плиз! уже весь Яндекс обыскал, нигде нету :(
Нужен сам алгоритм... Можно не на Паскале, а хоть просто на словах объяснить, только как можно понятнее...


календарь1   (2005-09-13 18:38:00) [8]


> где видел? я только что написал...

Не это а похожее...


Antonn   (2005-09-13 18:35:00) [9]

календарь1   (13.09.05 18:22) [7]
видел уже это...

где видел? я только что написал...


календарь1   (2005-09-13 18:29:00) [10]


> Джо ©   (13.09.05 18:02) [4]
> uses DateUtils...
> function WeekOfTheYear
> и другие

Нашел модуль. WeekOfTheYear там нету.


календарь1   (2005-09-13 18:27:00) [11]


> Абалдеть-не-встать

ну спасибо :)


Reindeer Moss Eater   (2005-09-13 18:23:00) [12]

мне нужен математическо-логический алгоритм

Абалдеть-не-встать
:)


Джо   (2005-09-13 18:23:00) [13]


> мне нужен математическо-логический алгоритм в чистом виде,
> а не Tdatetime...

На пальцах. Элементарно.


календарь1   (2005-09-13 18:22:00) [14]


> uses DateUtils...

говорит что такого нету...

> Antonn ©   (13.09.05 18:12) [6]

видел уже это... мне нужен математическо-логический алгоритм в чистом виде, а не Tdatetime...


Antonn   (2005-09-13 18:12:00) [15]

примерно так:

uses dateutils;

function GetNumDayNedely(_date:Tdatetime; _num:integer):integer;
var
 YYYY, MM, DD: Word;
 D: TDateTime; i:integer;
begin
 DecodeDate(_date, YYYY, MM, DD);
 D := EndOfAMonth(YYYY, MM);
 DecodeDate(D, YYYY, MM, DD);
 result:=0;
 d:=  EncodeDate(YYYY, MM, 1);
 for i:=0 to DD-1 do
 if _num=DayOfWeek(d+i) then result:=result+1;
end;


в _num - номер дня недели (1..7), начиная с Воскресенья


Reindeer Moss Eater   (2005-09-13 18:07:00) [16]

А зачем тебе номер недели в году для того, что бы посчитать пятницы?

В твоем календаре разное кол-во пятниц в разных неделях?


Джо   (2005-09-13 18:02:00) [17]

uses DateUtils...
function WeekOfTheYear
и другие


календарь1   (2005-09-13 17:47:00) [18]


> Надо их посчитать

как? Как хотя бы узнать номер недели в году?


Reindeer Moss Eater   (2005-09-13 17:39:00) [19]

Как мне узнать количество определенных дней недели (пятниц, например) в определенном месяце

Надо их посчитать.


TUser   (2005-09-13 17:34:00) [20]

DaysBetween


Наверх

Титульная страница Поиск, карта сайта Написать письмо