mktime ()- 转换本地时间
格式
#include <time.h>
time_t mktime(struct tm *time);语言级别
ANSI
线程安全
是
语言环境敏感
此函数的行为可能受当前语言环境的 LC_TOD 类别影响。
描述
mktime() 函数将 time指向的已存储 tm 结构 (假定为作业本地时间) 转换为适合与其他时间函数配合使用的 time_t 结构。 转换后, time_t 结构将被视为全球标准时间 (UTC)。 对于此转换, mktime() 将检查本地时区和夏令时 (DST) 的当前语言环境设置。 如果未在当前语言环境中设置这些值,那么 mktime() 将从当前作业获取本地时区和夏令时设置。 如果在语言环境中设置了 DST ,但未设置时区信息,那么将忽略该语言环境中的 DST 信息。 然后, mktime() 使用当前时区信息来确定 UTC。
time 所指向的某些结构元素的值不限于为 gmtime()显示的范围。
将忽略传递到 mktime() 的 tm_wday 和 tm_yday 的值,并在返回时为其分配正确的值。
tm_isdst 的正值或 0 值会导致 mktime() 最初假定 DST 分别在指定时间内生效或未生效。 tm_isdst 的负值会导致 mktime() 尝试确定 DST 是否在指定时间内生效。
返回值
mktime() 函数返回类型为 time_t的全球标准时间 (UTC)。 如果无法表示全球标准时间,那么将返回值 (time_t) (-1) 。
示例
此示例打印从当前日期起 40 天 16 小时的星期几。
#include <stdio.h>
#include <time.h>
char *wday[] = { "Sunday", "Monday", "Tuesday", "Wednesday",
"Thursday", "Friday", "Saturday" };
int main(void)
{
time_t t1, t3;
struct tm *t2;
t1 = time(NULL);
t2 = localtime(&t1);
t2 -> tm_mday += 40;
t2 -> tm_hour += 16;
t3 = mktime(t2);
printf("40 days and 16 hours from now, it will be a %s \n",
wday[t2 -> tm_wday]);
}
/******************* Output should be similar to: ***************
40 days and 16 hours from now, it will be a Sunday
*/
相关信息
- asctime ()-将时间转换为字符串
- asctime_r ()-将时间转换为字符串 (可重新启动)
- ctime ()-将时间转换为字符串
- ctime64()-将时间转换为字符串
- ctime64_r()-将时间转换为字符串 (可重新启动)
- ctime_r ()-将时间转换为字符串 (可重新启动)
- gmtime ()-转换时间
- gmtime64()-转换时间
- gmtime64_r()-转换时间 (可重新启动)
- gmtime_r ()-转换时间 (可重新启动)
- localtime ()-转换时间
- localtime64()-转换时间
- localtime64_r()-转换时间 (可重新启动)
- localtime_r ()-转换时间 (可重新启动)
- mktime64()-转换本地时间
- time ()-确定当前时间
- time64()-确定当前时间
- <time.h>