Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.04.24;
Скачать: [xml.tar.bz2];

Вниз

Алгоритм вычисления номера недели   Найти похожие ветки 

 
CTAPbIi   (2003-04-13 10:59) [0]

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


 
Song   (2003-04-13 11:18) [1]

Не надо никакого алгоритма. Всё есть.
WeekOf()


 
CTAPbIi   (2003-04-13 11:41) [2]

У меня D4, а там ее нет!!!


 
Song   (2003-04-13 12:08) [3]

Из исходников DateUtils.dcu:

function WeekOf(const AValue: TDateTime): Word;
begin
Result := WeekOfTheYear(AValue);
end;

function WeekOfTheYear(const AValue: TDateTime): Word;
var
LYear, LDOW: Word;
begin
DecodeDateWeek(AValue, LYear, Result, LDOW);
end;

procedure DecodeDateWeek(const AValue: TDateTime; out AYear, AWeekOfYear,
ADayOfWeek: Word);
var
LDayOfYear: Integer;
LMonth, LDay: Word;
LStart: TDateTime;
LStartDayOfWeek, LEndDayOfWeek: Word;
LLeap: Boolean;
begin
LLeap := DecodeDateFully(AValue, AYear, LMonth, LDay, ADayOfWeek);
ADayOfWeek := CDayMap[ADayOfWeek];
LStart := EncodeDate(AYear, 1, 1);
LDayOfYear := Trunc(AValue - LStart + 1);
LStartDayOfWeek := DayOfTheWeek(LStart);
if LStartDayOfWeek in [DayFriday, DaySaturday, DaySunday] then
Dec(LDayOfYear, 8 - LStartDayOfWeek)
else
Inc(LDayOfYear, LStartDayOfWeek - 1);
if LDayOfYear <= 0 then
DecodeDateWeek(LStart - 1, AYear, AWeekOfYear, LDay)
else
begin
AWeekOfYear := LDayOfYear div 7;
if LDayOfYear mod 7 <> 0 then
Inc(AWeekOfYear);
if AWeekOfYear > 52 then
begin
LEndDayOfWeek := LStartDayOfWeek;
if LLeap then
begin
if LEndDayOfWeek = DaySunday then
LEndDayOfWeek := DayMonday
else
Inc(LEndDayOfWeek);
end;
if LEndDayOfWeek in [DayMonday, DayTuesday, DayWednesday] then
begin
Inc(AYear);
AWeekOfYear := 1;
end;
end;
end;
end;


 
CTAPbIi   (2003-04-13 13:02) [4]

Спасибо


 
Anatoly Podgoretsky   (2003-04-13 13:21) [5]

Только учти, что существует несколько алгоритмов вычиснеия номера недели, поэтому тебя надо сначала разобраться, а каой тебе нужен. В Европе, наиболее часто используется алгоритм ISO, а в Америке другой.



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2003.04.24;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.007 c
1-76982
rrer
2003-04-13 12:56
2003.04.24
Treeview


3-76824
PavelOKES
2003-04-07 08:43
2003.04.24
Запрос из TQuery


3-76819
lightix
2003-04-04 10:42
2003.04.24
Как заставить TDBCheckBox видеть пустоту ?


1-76958
Gliser
2003-04-11 12:35
2003.04.24
Цветное Memo


1-76916
Ольга
2003-04-03 20:11
2003.04.24
Работа с файлами.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский