Programmer’s Reference


ГЛАВА 9 – Функции в С за време , дата и локализационни функции



страница10/19
Дата21.09.2016
Размер2.35 Mb.
#10416
1   ...   6   7   8   9   10   11   12   13   ...   19

ГЛАВА 9 – Функции в С за време , дата и локализационни функции

Тази секция обхваща функциите за време , дата и тези функции които се отнасят за географското разположение на компютъра . С дефинира различни функции които работят със датата и времето на системата като изминалото време . Тези функции изискват хедърния файл TIME . H . Този хедър дефинира три свързани със времето типа : clock_t , time_t и tm . Типoвете clock_t и time_t способни да представят системния час и дата като някакво цяло число . Това се нарича календарно време . Структурата тип tm съдържа датата и времето резделени на елементи . Структурата tm е дефинирана така :

struct tm {

int tm_sec ; / * секунди , 0 – 61 * /

int tm_min ;/ * минути , 0 – 59 * /

int tm_hour ;/ * часове , 0 – 23 * /

int tm_mday ; / * ден от месеца , 1 – 31 * /

int tm_mon ;/ * месец от януари , 0 – 11 * /

int tm_year ;/ * години от 1900 * /

int tm_wday ; / * дни от неделя , 0 – 6 * /

int tm_yday ;/ * дни от 1 януари , 0 – 365 * /

int tm_isdst ;/ * индикатор за лятно време * /

}

Стойността на tm_isdst ще бъде положителна ако е в действие лятното часово време , 0 ако не е , и отрицателна ако няма информация . Тази форма на датата и времето е наречена разделено време . В добавка TIME .H дефинира макроса CLOCKS_PER_SEC , който е броя на тактовете на системния часовник за секунда . Функциите за географска локализация изискват хедърния файл LOCALE .H . Повечето С / С++ компилатори също добавят допълнителни функции за час и дата , така че проверете ръководството на компилатора за повече информация за такива типове функции .


asctime ( )


# include < time . h >

char *asctime ( const struct tm *ptr ) ;

Функцията asctime ( ) връща указател към низ който конвертира информацията съхранявана в структурата указвана от ptr в следната форма :

ден месец дата час : минути : секунди година \ n \ 0

Това е пример :



Wed Jun 19 12 : 05 : 34 1999

Указателя към структура подаден на asctime ( ) e първоначално получен от localtime ( ) или gmtime ( ) . Буфера използван от asctime ( ) да съхрани форматирания изходен низ е постоянно заделен низ от символи и се презаписва всеки път когато се извика функцията . Ако желаете да запазите съдържанието на низа ще трябва да го копирате някъде . Свързани функции са localtime ( ) , gmtime ( ) , time ( ) и ctime ( ) .


clock ( )


# include < time . h >

clock_t clock ( void ) ;

Функцията clock ( ) връща стойност която е равна на количеството време от пускането на извикващата програма . За да трансформирате тази стойност в секунди , разделете я на CLOCKS_PER_SEC . Стойност -1 се връща ако времето не е дстъпно . Свързани функции са time ( ) , asctime ( ) и ctime ( ) .


ctime ( )


# include < time . h >

char *ctime ( const time_t *time ) ;

Функцията ctime ( ) връща указател към низ със следния формат :

ден месец дата час : минути : секунди година \ n \ 0

даващ указател към календарно време . Календарното време е първоначално получено чрез извикване time ( ) . Буфера използван от ctime ( ) да съхрани форматирания изходен низ е постоянно заделен низ от символи и се презаписва всеки път когато се извика функцията . Ако желаете да запазите съдържанието на низа ще трябва да го копирате някъде . Свързани функции са localtime ( ) , gmtime ( ) , time ( ) и asctime ( ) .


difftime ( )


# include < time . h >

double difftime ( time_t time2 , time_t time1 ) ;

Функцията difftime ( ) връща разликата в секунди между time1 и time2 . Тоест тя връща разликата time2 – time1 . Свързани функции са localtime ( ) , gmtime ( ) , time ( ) и asctime ( ) .


gmtime ( )


# include < time . h >

struct tm *gmtime ( const time_t *time ) ;

Функцията gmtime ( ) връща указател към разделената форма на time във формат на tm структура . Времето е във формат Световно координатно време ( UTC ) което всъщност е време по Гринуич . Стойността time е първоначално получена чрез извикване на time ( ) . Ако системата не поддържа UTC се връща NULL . Структурата използвана от gmtime ( ) да съхранява разделеното време е постоянно заделена и се презаписва всеки път когато се извиква функцията . Ако желаете да запазите съдържанието на структурата ще трябва да я копирате някъде . Свързани функции са localtime ( ) , time ( ) и asctime ( ) .


localeconv ( )


# include < time . h >

struct lconv *localeconv ( void ) ;

Функцията localeconv ( ) връща указател към структура от тип lconv , която съдържа различна информация за специфичностите на страната отнасящи се до начина на форматиране на числата . Структурата lconv е организирана така:

struct lconv {

char *decimal_point; /* десетична точка за

немонетарни стойности */



char *thousands_sep ; /* разделител за хилядните

за немонетарни стойности */



char *grouping ; /* определя групирането за

немонетарни стойности */



char int_curr_symbol ; /* международен символ

за валута */



char *currency_symbol ; /* местен символ за валута */

char *mon_decimal_point ;/* символ за десетична точка

за монетарни стойности */



char *mon_thousands_sep ;/* разделител за хилядните

за монетарни стойности */



char *mon_grouping ; /* определя групирането за

монетарни стойности */



char *positive_sign ; /* знак за положителна стойност

за монетарни стойности */



char *negative_sgn ; /* знак за отрицателна стойност

за монетарни стойности */



char int_frac_digits ; /* броя на цифрите показани от

дясната страна на десетичната

точка за монетарни стойности

показан чрез

международен формат */

char frac_digits ; /* броя на цифрите показани от

дясната страна на десетичната

точка за монетарни стойности

показан чрез местен формат */



char p_cs_precedes ; /* 1 ако символа за валута

предхожда положителната

стойност ; 0 ако символа за

за валута е след стойноста */



char p_sep_by_space ; /* 1 ако символа за валута е

разделен от стойноста чрез

интервал ; 0 в противен случай*/

char n_cs_precedes ; /* 1 ако символа за валута

предхожда отрицателната

стойност ; 0 ако символа за

за валута е след стойноста */


char n_sep_by_space ; /* 1 ако символа за валута е

разделен от отрицателна

стойност чрез интервал ; 0 в противен случай*/

char p_sign_posn ; /* показва позицията на символа

положителна стойност */



char n_sign_posn ; /* показва позицията на символа

отрицателна стойност */



}

Функцията lconv ( ) връща указател към lconv структура . Вие не трябва да променяте съдържанието на тази структура . Вижте документацията на компилатора за точна информация отнасяща се до lconv структурата . Свързана функция е setlocale ( ) .


localtime ( )


# include < time . h >

struct tm *localtime ( const time_t *time ) ;

Функцията localtime ( ) връща указател към разделената форма на time във форма на tm структура . Времето се представя в местно време . Стойността на time първоначално е получена чрез извикване на time ( ) . Структурата използвана от localtime ( ) за съхранение на разделеното време е постоянно заделена и се презаписва всеки път когато се извика функцията . Ако желаете да запазите съдържанието на структурата , ще трябва да го запишете .Свързани функции са gmtime ( ) , time ( ) и asctime ( ) .


mktime ( )


# include < time . h >

time_t mktime ( struct tm *time ) ;

Функцията mktime ( ) връща календарния еквивалент на разделеното време получено от структурата върната от time ( ) . Елементите tm_wday и tm_yday се установяват чрез функцията така че те не се нуждаят от дефиниране по време на извикване . Ако mktime ( ) не представя информацията точно календарно време се връща -1 . Свързани функции са time ( ) , gmtime ( ) , asctime ( ) и ctime ( )


Програмен съвет


Функцията mktime ( ) е особенно полезна когато искате да знаете кой ден от седмицата на коя дата се пада . Например , какъв ден от седмицата е 12 януари , 2012 г. За да откриете това извикайте mktime ( ) с тази дата и разгледайте члена tm_wday от структурата tm след връщането на функцията . Той ще съдържа деня от седмицата . Следващата програма демонстрира този метод :

/* открива кой ден от седмицата е 12 януари 2012 г */

# include < stdio . h >

# include < time . h >

char day [ ] [ 20 ] = {

“ Sunday “ , “ Monday “, “ Tuesday “,

“ Wednesday “ , “ Thursday “ , “ Friday “ , “ Saturday “

};

int main ( void )

{

struct tm t ;

t . tm_mday = 12 ;

t . tm_mon = 0 ;

t . tm_year = 112 ;

t . tm_hour = 0 ;

t . tm_min = 0 ;

t . tm_sec = 0 ;

t . tm_isdst = 0 ;

mktime ( &t ) ; /* попълва деня от седмицата*/

printf ( “ Day of week is %s . \n “,day [ t . tm_wday ] ) ;

return 0 ;

}

Когато програмата се пусне mktime ( ) автоматично изчислява деня от седмицата който е четвъртък в този случай . Понеже връщаната стойност на mktime ( ) не е нужна тя просто се игнорира .


setlocale ( )


# include < locale . h >

char *setlocale ( int type , const chart *locale ) ;

Функцията setlocale ( ) дава известни параметри които са чувствителни към географското положение на изпълнението на програмата за да бъдат проверени или установени . Например в Европа запетайката се използва на мястото на десетичната точка . Ако locale е 0 , setlocale ( ) връща указател към текущия локализационен низ . В противен случай , setlocale ( ) опитва да използва определения локализационен низ за да установи местните параметри както определя type . По време на извикване type трябва да бъде един от следните макроси :

LC_ALL

LC_COLLATE

LC_CTYPE


LC_MONETARY

LC_NUMERIC

LC_TIME

LC_ALL се отнася за всички локализационни категории . LC_COLLATE действа върху функцията strcoll ( ) . LC_MONETARY определя валутния формат . LC_NUMERIC променя символа за десетична точка за форматираните I / O функции . Накрая LC_TIME определя поведението на функцията

strftime ( ) .Стандарта ANSI C определя два възможни низа за locale . Първия е “ C “ който определя минималната среда за С компилация . Втория е “ “ нулев низ , който определя подразбиращата се зависеща от изпълнението среда . Всички други стойности за locale са имплементационно – зависими и ще засегнат преносимостта . Функцията setlocale ( ) връща указател към низ свързан със параметъра type . Свързани функции са localeconv ( ) , time ( ) , strcoll ( ) и strftime ( )

srftime ( )


# include < time . h >

size_t strftime ( char *str , size_t maxsize , const char *fmt ,

const struct tm *time ) ;

Функцията strftime ( ) поставя информацията за дата и време покрай друга информация в низ указван от str съгласно форматните команди открити в низа указван чрез fmt и използвайки разделеното време time . Максимум maxsize символа ще бъдат поставени в str . Функцията strftime ( ) работи също като sprintf ( ) приемайки множество от форматни команди които започват поставяйки със знак процент ( % ) и поставяйки форматния изход в низ . Форматните команди се използват да определят точния начин различна информация за времето и датата да се представят в str . Всички други символи открити във форматния низ се поставят непроменени в str . Показаните време и дата са в местно време . Форматните команди са изброени в следната таблица . Забележете че много от командите са в зависимост от случая :



команда замества

%а Съкратеното име на

ден от седмицата

%A Пълно име на ден от

седмицата



%b Съкратено име на месеца

%B Пълно име на месеца

%c Стандартен низ за дата и време

%d Деня от месеца като десетично

число ( 1 – 31 )



%H Час ( 0 – 23 )

%I Час ( 1 – 12 ) %j Деня от годината като

десетично число ( 1 – 366 )



%m Месеца като десетично

число ( 1 – 12 )



%M Минута като десетично

число ( 1 – 59 )


%p Местния еквивалент на

АМ и РМ

%S Секунда като десетично

число ( 1 – 61 )
%U Седмица от годината като

неделя е първи ден ( 0 – 53 )



%w Ден от седмицата като десетично

число ( 0 – 6 , неделя е 0 )


%W Седмица от годината

понеделник е първи ден ( 0 – 53 )



%x Стандартен низ за дата

%X Стандартен низ за време

%y Годината в десетичен формат

без века ( 0 – 99 )

%Y Годината включително века

в десетичен формат



%Z Името на часовата зона

%% Знак за процент ( % )

Функцията strftime ( ) връща броя на символите поставени в низа указван от str или 0 ако стане грешка . Свързани функции са time ( ) , localtime ( ) и



gmtime ( ) .

time ( )


# include < time . h >

time_t time ( time_t *time ) ;

Функцията time ( ) връща текущото календарно време на системата . Ако системата няма настроено време се връща -1 . Функцията time ( ) може да бъде извикана или с нулев указател или с указател към променлива от тип time_t . Ако се използва последното , на променливата ще бъде присвоено календарното време . Свързани функции са localtime ( ) , gmtime ( ) , strftime ( ) и ctime ( ) .



Каталог: books
books -> Тайнствената сила на пирамидите Богомил Герасимов Страхът на времето
books -> В обятията на шамбала
books -> Книга се посвещава с благодарност на децата ми. Майка ми и жена ми ме научиха да бъда мъж
books -> Николай Слатински “Надеждата като лабиринт” София, Издателство “виденов & син”, 1993 год
books -> София, Издателство “Българска книжница”, 2004 год. Рецензенти доц д. ик н. Димитър Йончев, проф д-р Нина Дюлгерова Научен редактор проф д-р Петър Иванов
books -> Николай Слатински “Измерения на сигурността” София, Издателство “Парадигма”, 2000 год
books -> Книга 2 щастие и успех предисловие
books -> Превръщане на числа от една бройна система в друга
books -> Тантриското преобразяване


Сподели с приятели:
1   ...   6   7   8   9   10   11   12   13   ...   19




©obuch.info 2024
отнасят до администрацията

    Начална страница