delphi последний день месяца
Программирование на Delphi
Последний день месяца
Алгоритм подсчёта времени, которое ушло на какую-либо операцию
Внимание! TDateTime 1899
Время простаивания системы
Вывести временную зону
Вывод даты в нужном формате
Вычисление даты Пасхи
Вычисление даты Пасхи 2
Вычисление немецких праздников
Генерация еженедельных списков задач
За какое время было создано изображение
Изменение системного времени из Delphi2
Использовать TTime для более 24 часов
Как выяснить дату последнего доступа к файлу
Как выяснить дату последнего изменения файла
Как долго запущена Windows
Как конвертировать RFC1123 в TDateTime
Как определить день недели
Как получить список часовых поясов
Как посчитать возраст человека
Как преобразовать строку в дату
Как реализовать визуальный отсчет времени
Как сменить системное время в операционной системе из программы
Как сменить системное время в операционной системе из программы 2
Как установить системную дату и время программно
Корректировка поведения маски TDateTimeField
Лимит на время выполнения программы
Определение восхода и захода солнца и луны
Определение текущего времени, отдельно часы, минуты и секунды
Определить, время сейчас до или после полудня
Определяем номер последнего дня в месяце
Организация цикла между двумя датами
Перевести секунды в формат времени
Получение номера месяца по его имени
Получение целого числа часов от начала суток
Получить время работы Windows
Получить даты с понедельника по пятницу текущей недели
Получить или установить допустимые периоды истечения времени
Получить номер дня в году
Получить номер недели по дате
Получить число дней в месяце
Последний день месяца
Преобразование даты и времени в строковый вид YYYYMMDDHHNNSS и обратно
Преобразование даты, месяц прописью
Преобразование количества секунд в формат TTIME
Преобразовать TDateTime в Unix TimeStamp
Преобразовать TFileTime в TDateTime
Преобразовать Персидскую дату в дату по Грегорианскому календарю
Проблема получения времени создания файла
Проверить, используется ли формат времени в 24 часа
Проверка дат в Table
Программа рисует на форме календарь на 2002 год
Реализация функции Delay
Реализация функции Delay 2
Реализация функции Delay 3
Реализация функции Delay 4
Реализация функции Delay 5
Сколько времени прошло с момента перезагрузки
Сравнить быстродействия алгоритмов
Узнать текущие время и дату по Гринвичу
Универсальная функция возврата значения элемента даты
Устанавливаем дату создания файла
Установка времени и даты файла
Установка времени компиляции программы в диалоговом окне О программе
Функция преобразует текстовую строку, задающую название месяца, в номер месяца
Функция, которая устанавливает дату одного файла, равную дате другого файла
Delphi последний день месяца
Здравствуйте уважаемые эксперты!
Подскажите, есть ли какие-нибудь функций на Delphi для нахождения последнего дня месяца, т.е. узнать сколько дней в месяце. Пример, Февраль 28(29) дней, Январь 31 и т.д.
нет.
пишик код, определяй какой месяц, и соответсвенно указывай последний день. незабудь реализовать проверку на высокосный год, где в феврале 29 дней.
удачи.
← →
TUser © ( 2004-09-20 09:17 ) [2]
Можно использовать DaysBetween и указать первое число данного месяца и первое число следующего.
← →
Warlord ( 2004-09-20 09:28 ) [3]
> Как найти последний день месяца?
Первый день следующего месяца минус 1.
← →
mike-d © ( 2004-09-20 10:19 ) [6]
Еще вариант (из модуля SysUtils)
function IsLeapYear(Year: Word): Boolean;
const
MonthDays: array [Boolean] of TDayTable =
((31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31),
(31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31));
← →
ghg © ( 2004-09-20 12:08 ) [7]
не в каждом високосном году в феврале 29 дней
если я все правильно помню
← →
Romkin © ( 2004-09-20 12:12 ) [8]
← →
ghg © ( 2004-09-20 12:14 ) [9]
>Romkin © (20.09.04 12:12) [8] ну да это и хотел сказать
поэтому самодельничеством лучше не заниматься а использовать [4] имхо
Проверку високосного года дай сам!
function LastDayOfMonth(const nom: Integer): Integer;
begin
case nom of
1: Result:=31;
2: Result:=28;
3: Result:=31;
4: Result:=30;
5: Result:=31;
6: Result:=30;
7: Result:=31;
8: Result:=31;
9: Result:=30;
10: Result:=31;
11: Result:=30;
12: Result:=31;
end;
end;
← →
TUser © ( 2004-09-20 13:18 ) [12]
← →
ghg © ( 2004-09-20 13:20 ) [13]
>kukuikar © (20.09.04 13:13) [11]
вопрос как раз в том какой год високосный а какой нет
см.[7,8]
> TUser © (20.09.04 13:18) [12]
>
> > Проверку високосного года дай сам!
>
> 🙂
ну а чё, мне еме все написать и скомпилировать может надо?:)
> вопрос как раз в том какой год високосный а какой нет
IsLeapYear.
Но вот не могу понять, зачем такие извращения.
function GetLastDayMonth( d :TDate): TDate;
var
yyy, mmm, ddd :word;
begin
DecodeDate(d, yyy, mmm, ddd);
mmm:=mmm+1;
if mmm>12 then mmm:=1;
ddd:=1;
Result:=EncodeDate(yyy,mmm,ddd)-1;
end;
> [16] Coven (20.09.04 14:12)
Ой, а можно я тоже свой вариант предложу? ;-)))))))))))
← →
SergP. ( 2004-09-20 14:37 ) [19]
> [11] kukuikar © (20.09.04 13:13)
> Проверку високосного года дай сам!
>
> function LastDayOfMonth(const nom: Integer): Integer;
> begin
> case nom of
> 1: Result:=31;
> 2: Result:=28;
> 3: Result:=31;
> 4: Result:=30;
> 5: Result:=31;
> 6: Result:=30;
> 7: Result:=31;
> 8: Result:=31;
> 9: Result:=30;
> 10: Result:=31;
> 11: Result:=30;
> 12: Result:=31;
> end;
> end;
function LastDayOfMonth(const nom: byte; const year:word): byte;
begin
case nom of
1: Result:=31;
2: if ((year mod 4 =0) and (year mod 100 >0)) or (year mod 400 = 0)
then Result:=29
else Result:=28;
3: Result:=31;
4: Result:=30;
5: Result:=31;
6: Result:=30;
7: Result:=31;
8: Result:=31;
9: Result:=30;
10: Result:=31;
11: Result:=30;
12: Result:=31;
end;
end;
> [18] Vitaly © (20.09.04 14:37)
Нда. На год внимания не обратил.
Под конец рабочего дня и не такое пишут. 😉
← →
SergP. ( 2004-09-20 14:46 ) [21]
function LastDayOfMonth(const nom: byte; const year:word): byte;
begin
if nom=2
then if ((year mod 4 =0) and (year mod 100 >0)) or (year mod 400 = 0)
then Result:=29
else Result:=28
else if (nom>7) xor (nom mod 2 = 1)
then result:=31
else result:=30;
end;
> SergP. (20.09.04 14:46) [21]
все, мне кажется это логический конец этой дискуссии.
RXLib, uses DateUtil, FirstDayOfNextMonth-1.
Если последний день N-го месяца, то
IncMonth((FirstDayOfNextMonth-1),N).
← →
Fay © ( 2004-09-20 19:59 ) [25]
2 [24] art (20.09.04 19:55)
Это что?! Что-то никак понять не могу.
Mm:=номер месяца от 1 до 12
/. /
If Mm=2 Then
Begin
If Gm Mod 4=0 Then I:=29
Else I:=28;
End
Else I:=30+Mm And 1 Xor Mm Shr 3;
/. /
Я здесь случайно оказался, т.ч. если что не понятно, пиши на мыло
P.S.: тоже что-то слышал о том что не каждый 4 год високосный, но из ненадёжных источников, если кто точно знает напишите на мыло, если не сложно.С уважением Isaev!
← →
Fay © ( 2004-09-20 21:55 ) [27]
2 [26] Isaev (20.09.04 21:52)
Год является високосным, если он кратен 4.
. Но если он кратен 100, то он не високосный.
. Но если он кратен 400, то он всё-таки високосный 8)
← →
SergP. ( 2004-09-21 07:26 ) [28]
> [22] kukuikar © (20.09.04 15:05)
>
> > SergP. (20.09.04 14:46) [21]
>
> все, мне кажется это логический конец этой дискуссии.
Ну при желании можно еще немножко поизвращаться:
function LastDayOfMonth(const nom: byte; const year:word): byte;
begin
if nom=2
then if ((year and 3 = 0) and (year mod 25 > 0)) or (year and 15 = 0)
then Result:=29
else Result:=28
else result:=Month shr 3 xor Month and 1 or 30;
end;
Типы, функции и процедуры Delphi для работы с датой и временем.
Содержание:
Функции и процедуры Delphi для работы с датой и временем.
Тип TDateTime.
Тип TTimeStamp.
Тип TSQLTimeStamp.
Функции и процедуры Delphi для работы с датой и временем.
Значения символических констант для обозначения дней недели в соответствии с ISO 8601. Используйте эти константы для работы с функциями, работающими в соответствии со стандартом ISO 8601 (функции из модуля DateUtils).
Внимание: Не используйте эти константы с функцией DayOfWeek, которая трактует Воскресение (Sunday) как первый день недели.
DateUtils
DateUtils
DateUtils
Внимание: Значения DayOfTheWeek соответствуют ISO 8601 (где Понедельник (Monday) является первым днем недели). Если хотите чтобы первым днем недели считалось Воскресение (Sunday) используйте функцию DayOfWeek вместо функции DayOfTheWeek.
Совет: Чтобы сделать возвращаемые значения более читабельными, используйте константы Day of week.
DateUtils
SysUtils
Внимание: Значения DayOfWeek не соответствуют ISO 8601 (где Понедельник (Monday) является первым днем недели). Если хотите чтобы первым днем недели считался Понедельник (Monday) используйте функцию DayOfTheWeek вместо функции DayOfWeek.
Содержание
Тип TDateTime.
Ниже приведены несколько примеров значения TDateTime и соответсвующие им дата и время:
0 | 12/30/1899 12:00 am |
2.75 | 1/1/1900 6:00 pm |
-1.25 | 12/29/1899 6:00 am |
35065 | 1/1/1996 12:00 am |
Чтобы найти количество дней, включая дробную часть, между двумя датами, просто вычтите два значения, если только одно из них не является отрицательным. Аналогично, если значение TDateTime не отрицательное, то, чтобы увеличить значение даты и времени на определенное кличество дней, включая дробную часть, достаточно прибавить количество дней, включая дробную часть, к значению TDateTime.
Когда обрабатываются отрицательные значения TDateTimes, то вычисление дробной части производится отдельно. Дробная часть отражает часть 24-часового дня не зависимо от знака значения TDateTime. Например, 6:00 am on 12/29/1899 это –1.25, а неt –1 + 0.25, что составило бы –0.75. Значений TDateTime между –1 и 0 не существует. Cовет: В модулях SysUtils и DateUtils для работы с датой и временем имеется большое количество процедур и функций на все случаи жизни. Не заморачивайтесь с обственными вычислениями, не изобретайте велосипед, а пользуйтесь уже готовыми наработками разработчиков Delphi. (См. Функции и процедуры Delphi для работы с датой и временем.) Оно надежнее.
Примечание: В Delphi 1 за начало отсчета принят год 1, т.е. для перевода даты Delphi 1 в дату последующих версий Delphi надо вычесть из даты число 693594.
Содержание
Тип TTimeStamp.
TTimeStamp представляет значения дата и время.
Используйте TTimeStamp если требуется повышеная точность представления значения времени в знчениях дата/время. Если нет необходимости сохранять значение времени с точностью до милисекунд, используйте более компактное TDateTime. Если необходима еще большая точность, то используйте TSQLTimeStamp (но НЕ назначайте его типом Variant).
Поле Time field показывает количество милисекунд, прошедших с полуночи.
Поле Data показывает число календарных дней от начала календаря (число дней с 1/1/0001 плюс один).
Содержание
Тип TSQLTimeStamp.
TSQLTimeStamp представляет значения даты и времени с очень высокой точностью.
Используя функцию VarSQLTimeStampCreate, Вы можете создать тип Variant который представляет значение TSQLTimeStamp. Фактически, простейший путь манипулирования значениями SQLTimeStamp это создать подобный Variant и использовать встроеные операторы, обеспечивающие работу с Variant.
Delphi последний день месяца
Вх. данные: число месяца, год
Необходимо получить 2 даты:
— дата первого дня указаного месяца и года
— дата последнего дня указаного месяца и года
← →
engine © ( 2008-01-22 15:02 ) [1]
> [0] deras © (22.01.08 14:57)
StartOfAMonth
EndOfAMonth
+ EncodeDate и decodedate
← →
deras © ( 2008-01-22 15:08 ) [3]
> [0] deras © (22.01.08 14:57)
Как вариант.
> Sergey13 © (22.01.08 16:47) [4]
> [5] Семеныч (22.01.08 16:56)
← →
Семеныч ( 2008-01-22 17:04 ) [7]
> Sergey13 © (22.01.08 17:00) [6]
То есть, Вы считаете, что после [3] Ваши наблюдения еще имели смысл?
← →
engine © ( 2008-01-22 17:06 ) [8]
> [7] Семеныч (22.01.08 17:04)
О чем спор? Сергей по теме ответил, вроде все правильно.
← →
Anatoly Podgoretsky © ( 2008-01-22 19:10 ) [9]
> По моим наблюдениям они заканчиваются накануне 1 числа следущего
> месяца
А по моим наблюдениям она равна количеству дней в месяце.
> [7] Семеныч (22.01.08 17:04)
Ты новый хранитель местных традиций или представляешь святую инквизицию? Тогда хоть зарегистрируйся.
> еще имели смысл?
Представь себе да. Например в SQL запросе, где недоступны делфийские функции, удобнее, ИМХО, пользоваться именно моими вариантом (то, что это вариант решения я честно указал).
Sergey13 © (23.01.08 9:08) [10]
+1
function StartOfAMonth(date:TDateTime):TDateTime;
begin
result:=Int(date)-DayOf(date)+1;
end;
function EndOfAMonth(date:TDateTime):TDateTime;
begin
result:=StartOfAMonth(StartOfAMonth(date)+32)-1;
end;
Slym © (23.01.08 10:29) [11]
function EndOfAMonth(date:TDateTime):TDateTime;
поправка
function EndOfAMonth(date:TDateTime):TDateTime;
begin
result:=StartOfAMonth(StartOfAMonth(date)+32)-OneMillisecond;
end;
← →
Семеныч ( 2008-01-23 10:35 ) [13]
> Sergey13 © (23.01.08 09:08) [10]
Вряд ли задавший вопрос настолько глуп, что нуждался в подсказке очевидного. Проблема состояла не в этом, а в том, как получить результат именно в виде TDateTime. Человек просто не знал нужных функций и после того, как ему их подсказали, проблема была сразу же закрыта. Что он, фактически, и сообщил в [3] (иначе были бы новые вопросы). Значит, появившийся через час после этого Ваш постинг был уже не нужен. Да и вряд ли вообще нужны ответы, в которых излагаются тривиальные вещи, очевидные даже для первоклассников.
Не хотелось бы к такому привыкать.
> [13] Семеныч (23.01.08 10:35)
> Да и вряд ли вообще нужны ответы, в которых излагаются тривиальные
> вещи, очевидные даже для первоклассников.
Эти тривиальные вещи на самом деле алгоритм определения искомых дат.
Разумеется это примитивный псевдокод (на случай если ты попытаешься это откомпилировать).
Если ты не понял, что это алгоритм, то видимо ты зашел не на тот сайт. А не поняв, видимо решил, что это издевка.
Почитав несколько твоих постов в разных ветках я не нашел к сожалению твоих ответов авторам по существу, только обсуждения постов отвечающих. Ты видишь в этом свое предназначение?
← →
Семеныч ( 2008-01-23 11:19 ) [17]
> Sergey13 © (23.01.08 11:00) [16]
Вот другой псевдокод:
Скажите, Вы действительно считаете других настолько глупыми, что им нужно объяснять, сколько будет дважды два? И при этом еще сомневаетесь, поняли ли они Ваши объяснения?
> [17] Семеныч (23.01.08 11:19)
Ну прекращай уже 🙂
Уже не смешно становится.
Delphi последний день месяца
Получаю текущий день
var
TD: TDateTime;
a как получить начало и конец этого дня?
← →
stone © ( 2006-09-07 14:03 ) [1]
спасибо, начало работает
А что есть конец текущего?
23:59:59?
23:59:59.999?
23:59:59.99999999?
первый вариант утроил бы
сделал так: trunc(Now) + 0.999999
а есть варианты для начала и конца месяца?
> а есть варианты для начала и конца месяца?
А что есть начало и конец месяца?
Не, я не прикалываюсь, я серьёзно. Это именно то время (количество дней * 24 часа), которое прошло в месяце? Это первый и последний день месяца?
Не всё так просто.
← →
evvcom © ( 2006-09-07 14:53 ) [7]
нужен первый и последний день месяца от указанной даты
> А какая тебе разница?
разница в значениях которое мне потом вернет DateTimeToStr
> Ну с началом вроде как все ясно, а с концом аналогично,
> как и с концом дня 🙂
а это не понял, до какого порядка округлять?
← →
SergP. ( 2006-09-07 15:34 ) [9]
> [8] Уч (07.09.06 15:30)
> нужен первый и последний день месяца от указанной даты
Последний день это когда берем первый день следующего месяца и отнимаем 1
> разница в значениях которое мне потом вернет DateTimeToStr
Так тебе строковое представление конца месяца надо? Или истинное?
← →
SergP. ( 2006-09-07 15:40 ) [11]
А для особо ленивых есть стандартные функции:
находятся в dateutils
← →
evvcom © ( 2006-09-07 15:41 ) [12]
> [8] Уч (07.09.06 15:30)
> разница в значениях которое мне потом вернет DateTimeToStr
Ну и что оно тебе должно вернуть? И почему?
- delphi первый день месяца
- delphi прибавить день к дате