Тази секция обхваща функциите за време , дата и тези функции които се отнасят за географското разположение на компютъра . С дефинира различни функции които работят със датата и времето на системата като изминалото време . Тези функции изискват хедърния файл 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 ( ) .
Сподели с приятели: |