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

Вниз

Количество дней в месяце   Найти похожие ветки 

 
KSION   (2003-01-23 12:14) [0]

Как узнать количество дней в месяце


 
MBo   (2003-01-23 12:24) [1]

function DaysInMonth




 
Separator   (2003-01-23 12:34) [2]

function DaysPerMonth(AYear, AMonth: Integer): Integer;


 
KSION   (2003-01-23 13:21) [3]

в какой версии Делфи? в 6-ке нет, такой функции (DaysPerMonth), или какой модуль использовать?


 
Johnmen   (2003-01-23 13:39) [4]

Просто удивительная беспомощность !
MBo © тебе сказал, а ты даже не можешь нажать F1...


 
Anatoly Podgoretsky   (2003-01-23 13:42) [5]

Переинсталлируй Дельфи


 
Separator   (2003-01-23 14:02) [6]

Unit DateUtils


 
Slava   (2003-01-23 14:20) [7]

Даже, если нет такой функции, то просто берешь первое число следующего месяца и отнимаешь один день.


 
mike-d   (2003-01-23 15:18) [8]

uses SysUtils;

...

// Y - год
// M - номер месяца (1..12)
// DayNum - кол-во дней

DayNum := MonthDays[IsLeapYear(Y), M];


 
cult   (2003-01-23 15:29) [9]

Ну блин Ваще, функция пишется самостоятельно за 5 минут и содержать будет строк 10, даже если бы в дельфях встроенной не было. Смешно и грустно...

типа:

function Days(Year,Month:integer):integer;
begin
Result:=-1;
case month of
1,3,5,7,8,10,12:Result:=31;
4,6,9,11:Result:=30;
2:begin
Result:=28;
if (Year-2002) div 4 = 0 then Result:=Result+1;
end;
end;
end;


 
MBo   (2003-01-23 15:31) [10]

все хорошо, но это:
if (Year-2002) div 4 = 0 then Result:=Result+1;
Ну блин Ваще


 
Anatoly Podgoretsky   (2003-01-23 15:36) [11]

Это выходит, что в феврале 2002 года 29 дней, в могилу.


 
cult   (2003-01-23 15:38) [12]

mod, блин, а не div!
Ну я Ваще :)))

А насчет 2002... а он не високосный был? ну тогда 2000 :)


 
REA   (2003-01-23 16:03) [13]

Ну если брать планетарный масштаб, то там каждый сотый или тысячный год не високосный. Или что-то типа того. Вобщем на 4 не всегда можно делить.


 
Reindeer Moss Eater   (2003-01-23 16:07) [14]

В Григорианском календаре в течение 400 лет должно быть не 100 високосных лет, а на 4 меньше. Эти 4 года определяются произвольным образом.


 
KDenis   (2003-01-23 16:16) [15]

Самый простой способ: научится считать до 31


 
REA   (2003-01-23 16:29) [16]

>Эти 4 года определяются произвольным образом.

Т.е. заявку надо писать что ли в комитет по распределению дат? Наверняка какая то система есть. Или планеты того - с орбиты сползают?


 
Reindeer Moss Eater   (2003-01-23 16:50) [17]

Т.е. заявку надо писать что ли в комитет по распределению дат? Наверняка какая то система есть.
Или планеты того - с орбиты сползают?

1. Зачем?
2. Да наверняка есть
3. Постепенно сползают


 
Anatoly Podgoretsky   (2003-01-23 16:54) [18]

И скорость вращения изменяется, падает


 
Reindeer Moss Eater   (2003-01-23 17:01) [19]

Виноват, наврал. Про произвольный выбор.

к високосным относятся только те вековые годы, число столетий которых делится на 4 без остатка. Такими годами, являются: 1600, 2000, 2400, 2800 и т. д. Годы же 1700, 1800, 1900, 2100 и т. д. будут простыми.


 
dolmat   (2003-01-23 17:04) [20]

еще можно попробовать такое
if mons+1>12 then year1:=year+1 else year1:=year;
n_day:=strtodate("01."+inttostr(mons)+"."+inttostr(year))-strtodate("01."+inttostr(mons+1)+"."+inttostr(year1))-1;


 
Johnmen   (2003-01-23 17:10) [21]

>Reindeer Moss Eater (23.01.03 17:01)

Наврал опять...

Високосные - делящиеся на 4 без ост-ка, за исключением делящихся на 100, за исключением делящихся на 400


 
Reindeer Moss Eater   (2003-01-23 17:16) [22]

Johnmen ©
курсив у меня - это фрагмент.
В нем описано правило поиска невисокосных лет всех среди кратных четырем.


 
KDenis   (2003-01-23 17:21) [23]

А зачем количество дней в месяце? Может GetDate подойдет???


 
Романов Р.В.   (2003-01-23 17:41) [24]


> Високосные - делящиеся на 4 без ост-ка, за исключением делящихся
> на 100, за исключением делящихся на 400


Да что вы беспокоитесь. Через 6 лет взорвется Солнце, а тех кто выжевет через 3 года добъет метеорит :)


 
dtrn   (2003-01-27 16:15) [25]

function MaxDayOfMonth(Year,Month:word):integer;Overload;
function MaxDayOfMonth(Date:TDateTime):integer;Overload;

implementation

function MaxDayOfMonth(Year,Month:word):integer;
begin
Result:=PDayTable(
@MonthDays[IsLeapYear(Year)])^[Month];
end;

function MaxDayOfMonth(Date:TDateTime):integer;Overload;
var
Year,Month,Day:Word;
begin
DecodeDate(Date,Year,Month,Day);
Result:=MaxDayOfMonth(Year,Month);
end;


 
Anatoly Podgoretsky   (2003-01-27 16:23) [26]

Reindeer Moss Eater (23.01.03 17:01)
Что скажешь про 4000 год?


 
Reindeer Moss Eater   (2003-01-27 16:57) [27]

Скажу, что Григорианский календарь к этому времени выйдет из употребления


 
Sha   (2003-01-28 11:49) [28]

LeapYear:= (Year and 3=0)
and ((Year mod 100<>0)
or (Year and 15=0)
and (Year mod 4000<>0));


 
Anatoly Podgoretsky   (2003-01-28 11:58) [29]

Вот жто загадочно (Year and 15=0)


 
Chubais   (2003-01-28 12:32) [30]

Sha © (28.01.03 11:49)
поразительно!


 
Sha   (2003-01-28 12:34) [31]

2 Anatoly Podgoretsky © (28.01.03 11:58)
Делимость на 16 проверить легче, чем делимость на 400.


 
Sha   (2003-01-28 12:58) [32]

2 Chubais © (28.01.03 12:32)
Поразительно хорошо или поразительно плохо?
Если первое, то спасибо.
Если второе, то советую сначала все как следует проверить.



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

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

Наверх





Память: 0.51 MB
Время: 0.009 c
14-15888
Вольный Стрелок
2003-01-16 19:36
2003.02.06
локализация интерфейса приложений


3-15433
F1
2003-01-22 13:25
2003.02.06
Как найти все запущенные SQL-serverа в сети...


14-15840
Driverrr
2003-01-18 21:58
2003.02.06
Че с моей XP?


14-15829
Карлсон
2003-01-18 21:02
2003.02.06
диску кранты?


3-15477
Shadow
2003-01-19 17:09
2003.02.06
Проблема со сложныи индексами





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский