Неверов Евгений Викторович
Меню сайта
Категории раздела
Программирование на языке Паскаль [27]
В данной категории представлены новые функции, созданные на языке Паскаль, которые могут пригодиться при написании своих программ
Программирование на Delphi [18]
В данной категории представлены полезные подпрограммы, которые могут пригодиться при написании своих программ, а также рассматриваются примеры готовых проектов, создаваемых в среде программирования Delphi
Программирование на HTML [0]
В данной категории рассматриваются примеры готовых проектов, создаваемых на языке HTML
Прочее [0]
Свободная тематика
Мини-чат
200
Наш опрос
Оцените мой сайт
Всего ответов: 41
Статистика

Рейтинг@Mail.ru
Онлайн всего: 1
Гостей: 1
Пользователей: 0
Форма входа
Главная » Статьи » Программирование на языке Паскаль [ Добавить статью ]

Функции даты и времени

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'.

Ниже статьи имеется небольшая программа, позволяющая вычислить даты Пасхи.


Введите год. Рассчитать на лет.
Категория: Программирование на языке Паскаль | Добавил: newerow1989 (12.03.2016 11:05 )
Просмотров: 893 | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Все смайлы
Код *:
Поиск
Друзья сайта
  • Создать сайт
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz
  • Все проекты компании
  • Copyright MyCorp © 2018
    Автор этого сайта: Неверов Евгений Викторович

    Мои координаты
    Бесплатный конструктор сайтов - uCozЯндекс.Метрика