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_wdaytm_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
*/

相关信息