Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие 3000555.doc
Скачиваний:
31
Добавлен:
30.04.2022
Размер:
19.12 Mб
Скачать

2.7.4. Дополнение:тип данных tDateTime (дата-время)

Кроме типов данных Паскаля, в Delphi применяется еще дополнительный тип данных TDateTime (дата-время).

Тип дата-время предназначен для одновременного хранения даты и времени.

Тип дата-время описывается стандартным идентификатором TDateTime. Во внутреннем представлении он занимает 8 байт.

Над данными типа TDateTime могут производиться те же стандартные операции, что и над вещественными числами.

В выражениях этого типа могут участвовать переменные целого и вещественного типов, а также константы.

Ниже приведены функции, используемые для работы с датой и временем.

В этих функциях dt — переменная типа TDateTime.

Чтобы эти функции были доступны, в программу надо поместить ссылку на модуль DateUtils (указать имя модуля в директиве uses).

Now () – Возвращает текущую дату и время. Системная дата и время. Переменная типа TDateTime.

DateToStr(dt) – Преобразует дату в строку символов в формате dd.mm.yyyy

TimeToStr(dt) - Преобразует время в строку символов в формате hh.mm.ss

DayOf(dt) – Номер дня в месяце, соответствующий дате, указанной в качестве параметра функции.

WeekOf(dt) – Номер недели, соответствующий дате, указанной в качестве параметра функции.

MonthOf(dt) - Номер месяца, соответствующий дате, указанной в качестве параметра функции.

YearOf(dt) – Год, соответствующий дате, указанной в качестве параметра функции.

DayOfWeek(dt) – Номер дня недели, соответствующий дате, указанной в качестве параметра функции. 1 – воскресенье, 2 – понедельник и т.д.

StartOfWeek(w) – Дата первого дня недели, где w – порядковый номер недели года.

HourOf(dt) – Количество часов.

MinuteOf(dt) – Количество минут.

SecondOf(dt) – Количество секунд.

DecodeDate(dt,y,m,d) – Возвращает год, месяц и день, представленные отдельными числами.

DecodeTime(dt,h,m,s,ms) – Возвращает время, т.е. часы, минуты, секунды и миллисекунды, представленные отдельными числами.

FormatTimeDate(f,dt) – Строка символов, представляющая собой дату или время. Способ представления задает строка формата f. ТАк формат dd/mm/yyyy задает дату, а формат hh:mm – время.

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

Для этого установим на форму два компонента Label, компонент Button и компонент Timer (компоненты, использованные в этом приложении, описаны нижеследующих разделах).

На рис 2.3 приведена форма этого приложения.

Рис. 2.3

Листинг этого приложения может иметь следующий вид:

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, DateUtils, StdCtrls, ExtCtrls;

type

TForm1 = class(TForm)

Label2: TLabel;

Button1: TButton;

Label3: TLabel;

Timer1: TTimer;

procedure Button1Click(Sender: TObject);

procedure FormShow(Sender: TObject);

procedure Timer1Timer(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

const

Dny : array [1..7] of string [11] =

('воскресенье', 'понедельник', 'вторник', 'среда',

'четверг', 'пятница', 'суббота');

Mesjas : array [1..12] of string [8] =

('января', 'февраля', 'марта', 'апреля', 'мая',

'июня', 'июля', 'августа', 'сентября',

'октября', 'ноября', 'декабря');

var

Form1: TForm1;

Present : TDateTime;

Year, Month, Day,Dw : Word;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);

begin

Halt;

end;

procedure TForm1.FormShow(Sender: TObject);

begin

Present := Now ();

decodeDate (Present, Year, Month, Day);

Dw:= DayOfWeek (Present);

Form1.Label2.Caption := IntToStr(Day)+' '+ Mesjas [Month ]+' '+ IntToStr(Year)+ ' года, '+Dny[Dw];

end;

procedure TForm1.Timer1Timer(Sender: TObject);

var

Time : TDateTime;

begin

//настройка таймера

Timer1.Interval := 1000;

Timer1.Enabled:= True;

Time := Now ();

Form1.Label3.Caption := FormatDateTime ('hh:mm:ss',Time);

end;

end.