1. Форматирование даты и времени путем преобразования в строку
function FormatDateTime(const Format: string; DateTime: TDateTime): string;
где
Format - формат строки;
DateTime - дата и время.
Поддерживаются следующие описатели формата строки Format:
c - число.месяц.год час:минута:секунда (например, '1.01.2127 1:08:04')
d - число (1..31)
dd - число (01..31)
ddd - день недели (Пн..Вс)
dddd - день недели (понедельник..воскресенье)
ddddd - число.месяц.год (например, '04.05.2096')
dddddd - число месяц год (например, '4 мая 2096 год')
g - эра (выводит 'наша эра' с 1.01.1601)
gg - эра (выводит 'наша эра' с 1.01.1601)
e - год в течение текущего периода/эры (0..99)
ee - год в течение текущего периода/эры (00..99)
m - месяц (1..12)
mm - месяц (01..12)
mmm - месяц (январь..декабрь)
mmmm - месяц (Январь..Декабрь)
yy - год (00..99)
yyyy - год (0000..9999)
h - час (0..23)
hh - час (00..23)
n - минута (0..59)
nn - минута (00..59)
s - секунда (0..59)
ss - секунда (00..59)
z - миллисекунда (0..999)
zzz - миллисекунда (000..999)
t - час:минута (например, '9:02')
tt - час:минута:секунда (например, '4:08:00')
am/pm - обозначение времени до и после полудня (выводит 'am' или 'pm')
a/p - обозначение времени до и после полудня (выводит 'a' или 'p')
ampm - обозначение времени до и после полудня (выводит в зависимости от настройки компьютера)
Например, FormatDateTime('dd.mm.yyyy hh:nn:ss am/pm', Now) выведет '01.01.2016 08:00:00 am'.
Примечание. Данная функция входит в состав языка Паскаль.
2. Проверка правильности введения даты
function TryEncodeDate(Year, Month, Day: Word; out Date: TDateTime): Boolean;
где
Year - год;
Month - месяц;
Day - день;
Date - полученная дата.
Например, TryEncodeDate(2015, 2, 29, Date) выведет отрицательное значение; TryEncodeDate(2016, 5, 1, Date) выведет положительное значение, а значение Date станет равным '42491'.
Примечание. Данная функция входит в состав языка Паскаль.
3. Объединение года, месяца и дня в дату
function EncodeDate(Year, Month, Day: Word): TDateTime;
где
Year - год;
Month - месяц;
Day - день.
Например, EncodeDate(2012, 9, 30) выведет '41182'.
Примечание. Данная функция входит в состав языка Паскаль.
4. Проверка правильности введения времени
function TryEncodeTime(Hour, Min, Sec, MSec: Word; out Time: TDateTime): Boolean;
где
Hour - часы;
Min - минуты;
Sec - секунды;
MSec - миллисекунды;
Time - полученное время.
Например, TryEncodeTime(24, 8, 60, 984, Time) выведет отрицательное значение; TryEncodeTime(23, 51, 37, 687, Time) выведет положительное значение, а значение Time станет равным '0,994186' (округленно).
Примечание. Данная функция входит в состав языка Паскаль.
5. Объединение часов, минут, секунд и миллисекунд во время
function EncodeTime(Hour, Min, Sec, MSec: Word): TDateTime;
где
Hour - часы;
Min - минуты;
Sec - секунды;
MSec - миллисекунды.
Например, EncodeTime(22, 47, 36, 1) выведет '0,949722' (округленно).
Примечание. Данная функция входит в состав языка Паскаль.
6. Порядковый номер дня года
function DenNomer(DateTime: TDateTime): integer;
var g: integer;
r: TDateTime;
begin
DateTime:=Trunc(DateTime);
g:=StrToInt(FormatDateTime('yyyy', DateTime));
r:=EncodeDate(g, 1, 1);
Result:=Round(DateTime-r+1);
end;
где
DateTime - исходная дата.
Например, DenNomer(EncodeDate(2087, 6, 27)) выведет '178' (178-й день 2087-го года).
7. Порядковый номер недели года
function NedelyaNomer(DateTime: TDateTime): integer;
var g, n: integer;
r: TDateTime;
begin
DateTime:=Trunc(DateTime);
g:=StrToInt(FormatDateTime('yyyy', DateTime));
r:=EncodeDate(g, 1, 1);
n:=DayOfWeek(DateTime)-1;
If n=0 then
n:=7;
r:=r-n+1;
n:=Round(DateTime-r);
Result:=n div 7+1;
end;
где
DateTime - исходная дата.
Например, NedelyaNomer(EncodeDate(2087, 6, 27)) выведет '26' (26-я неделя 2087-го года).
8. Перевод количества секунд в привычный нам формат
function FormatSec(Sec: real): string;
var dn, ch, min, s, ms: integer;
begin
ms:=Trunc(Frac(Sec)*1000);
Sec:=Trunc(Sec);
s:=Trunc(Sec) mod 60;
Sec:=Trunc(Sec/60);
min:=Trunc(Sec) mod 60;
Sec:=Trunc(Sec/60);
ch:=Trunc(Sec) mod 24;
Sec:=Trunc(Sec/24);
dn:=Trunc(Sec);
Result:='';
If dn>0 then
Result:=Format('%d дн. ', [dn]);
Result:=Format('%s%d:%d:%d', [Result, ch, min, s]);
If ms>0 then
Result:=Format('%s,%d', [Result, ms]);
end;
где
Sec - количество секунд.
Например, FormatSec(658745.8) выведет '7 дн. 14:59:05,800'.
9. Количество дней в месяце
function Kol_WoDnejWMesyatse(Month, Year: word): word;
var DayTable: TDayTable;
begin
DayTable:=MonthDays[IsLeapYear(Year)];
Result:=DayTable[Month];
end;
где
Month - месяц;
Year - год.
Например, Kol_WoDnejWMesyatse(2, 2096) выведет '29'.
10. Часовой пояс
function Zone: real;
var lp: TTimeZoneInformation;
begin
GetTimeZoneInformation(lp);
Result:=-lp.Bias/60;
end;
Примечание 1. Выводит часовой пояс в зависимости от настройки компьютера (например, '3').
Примечание 2. Список часовых поясов можно найти в разделе "Чтение системного реестра" во 2 пункте "Список часовых поясов".
11. Вычисление даты Пасхи
function Pasha(Year: integer): TDateTime;
var a, b, c: integer;
begin
a:=Year mod 19;
b:=Year mod 4;
c:=Year mod 7;
a:=(19*a+15) mod 30;
b:=(2*b+4*c+6*a+6) mod 7;
a:=a+b;
b:=-2+Year div 100-Year div 400;
If TryEncodeDate(Year, 3, 22, Result) then
Result:=Result+a+b else
Result:=0;
end;
где
Year - год.
Например, FormatDateTime('c', Pasha(2016)) выведет '01.05.2016'.
Ниже статьи имеется небольшая программа, позволяющая вычислить даты Пасхи.
|