826_____________________________________________Глава 14

Более простой, но и менее гибкий способ перевода дат и времени в строку дают
функции DateToStr, TimeToStr, DateTimeToStr, использующие установки глоба-
льных переменных.

Несколько функций — StrToDate, StrToDateTime, StrToTime осуществляют
обратное преобразование — строки в дату, время или дату и время TDateTime,
Функция StrToDate преобразует строку даты. Строка должна содержать две или
три цифры, разделенных символом, указанным в глобальной переменной DateSe-
parator. Последовательность указания дня, месяца и года определяется глобаль-
ной переменной ShortDateFormat. Возможные варианты: m/d/y, d/m/y или
y/m/d. Если указаны только два числа, они интерпретируются как дата (m/d или
d/m) текущего года. Если год указан не более чем двумя цифрами (от 0 до 99),
предполагается год текущего столетия.

Функция StrToTime преобразует строку времени, которая должна содержать
две или три цифры, разделенные символом, указанным в глобальной переменной
TimeSeparator: hh:mm:ss. Секунды могут не указываться. Функция StrToDateTi-
me преобразует строку даты и времени с форматами, аналогичными предыдущим
функциям.

При ошибках преобразования в рассмотренных функциях генерируется исклю-
чение EConvertError.

Функции из файла dos.h используют для хранения даты структуру типа date:

struct date{

int da year;     // текущий год

char da day;     // день месяца

char da_mon;     // номер месяца (1 — январь)
};

Все данные хранятся в виде целых чисел, что облегчает их дальнейшую обра-
ботку. Приведем пример использования такой структуры. Следующие операторы
создают структуру D типа date и заносят в нее текущую дату:

ttinclude <dos.h>

struct date D;

getdate(&D) ;

В дальнейшем можно обращаться к полям этой структуры: D.da_year,
D.da_mon, D.da_day.

Аналогичная структура предусмотрена и для хранения времени:

struct time {

unsigned char ti min;      // минуты

unsigned char ti_hour;     // часы

unsigned char ti_hund;     // сотые доли секунды

unsigned char ti sec;      // секунды
};

Функция time возвращает текущее время в секундах, отсчитанное от 0 часов 1
января 1970 по Гринвичу. Это время может быть преобразовано в строку с нуле-
вым символом в конце, включающую год, месяц, день и т.д., с помощью функции
ctime с учетом поправок на локальное время. Вид строки:

Mon Nov 21 11:31:54 1983\n\0

к сожалению, с английскими сокращениями.

Время, возвращаемое функцией time, может также с помощью функций gmti-
me (время по Гринвичу) или localtime (время с локальной поправкой) преобразо-
вываться в поля структуры типа tm:

struct tm (

int tm sec;         // секунды
int tm_min;         // минуты