mktime
标准库 -
C 库函数time_t mktime(struct tm *timeptr)把timeptr所指向的结构转换为自 1970 年 1 月 1 日以来持续时间的秒数,发生错误时返回-1。
声明下面是 mktime() 函数的声明。
time_t mktime(struct tm *timeptr)参数
timeptr-- 这是指向表示日历时间的 time_t 值的指针,该日历时间被分解为以下各部分。下面是 timeptr 结构的细节:
struct tm { int tm_sec; /* 秒,范围从 0 到 59 */ 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; /* 一年中的第几天,范围从 0 到 365 */ int tm_isdst; /* 夏令时 */ };返回值
该函数返回自 1970 年 1 月 1 日以来持续时间的秒数。如果发生错误,则返回 -1 值。
实例下面的实例演示了 mktime() 函数的用法。
实例
#include
#include
intmain ( ) {
intret ;
structtm info ;
charbuffer [ 80 ] ;
info. tm_year = 2021 - 1900 ;
info. tm_mon = 7 - 1 ;
info. tm_mday = 4 ;
info. tm_hour = 0 ;
info. tm_min = 0 ;
info. tm_sec = 1 ;
info. tm_isdst = - 1 ;
ret = mktime ( &info ) ;
if (ret == - 1 ) {
printf ( "Error: unable to make time using mktime\n" ) ;
} else {
strftime (buffer , sizeof (buffer ) , "%c" , &info ) ;
printf (buffer ) ;
}
return ( 0 ) ;
}
#include
intmain ( ) {
intret ;
structtm info ;
charbuffer [ 80 ] ;
info. tm_year = 2021 - 1900 ;
info. tm_mon = 7 - 1 ;
info. tm_mday = 4 ;
info. tm_hour = 0 ;
info. tm_min = 0 ;
info. tm_sec = 1 ;
info. tm_isdst = - 1 ;
ret = mktime ( &info ) ;
if (ret == - 1 ) {
printf ( "Error: unable to make time using mktime\n" ) ;
} else {
strftime (buffer , sizeof (buffer ) , "%c" , &info ) ;
printf (buffer ) ;
}
return ( 0 ) ;
}
让我们编译并运行上面的程序,这将产生以下结果:
Sun Jul 4 00:00:01 2021
实例
/*
输入日期判断是周几
*/
#include
<
stdio.h
>
/* printf, scanf */
#include
<
time.h
>
/* time_t, struct tm, time, mktime */
int
main
(
)
{
time_t
rawtime
;
struct
tm
*
timeinfo
;
int
year
,
month
,
day
;
const
char
*
weekday
[
]
=
{
"
周日
"
,
"
周一
"
,
"
周二
"
,
"
周三
"
,
"
周四
"
,
"
周五
"
,
"
周六
"
}
;
/*
用户输入日期
*/
printf
(
"
年:
"
)
;
fflush
(
stdout
)
;
scanf
(
"
%d
"
,&
year
)
;
printf
(
"
月:
"
)
;
fflush
(
stdout
)
;
scanf
(
"
%d
"
,&
month
)
;
printf
(
"
日:
"
)
;
fflush
(
stdout
)
;
scanf
(
"
%d
"
,&
day
)
;
/*
获取当前时间信息,并修改用户输入的输入信息
*/
time
(
&
rawtime
)
;
timeinfo
=
localtime
(
&
rawtime
)
;
timeinfo
->
tm_year
=
year
-
1900
;
timeinfo
->
tm_mon
=
month
-
1
;
timeinfo
->
tm_mday
=
day
;
/*
调用 mktime: timeinfo->tm_wday
*/
mktime
(
timeinfo
)
;
printf
(
"
那一天是:%s
\
n
"
,
weekday
[
timeinfo
->
tm_wday
]
)
;
return
0
;
}
让我们编译并运行上面的程序,这将产生以下结果:
年: 2018月: 7日: 26那一天是:周四
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。