mktime64()- 转换本地时间

格式

#include <time.h>
time64_t mktime64(struct tm *time);

语言级别

ILE C 扩展

线程安全

语言环境敏感

此函数的行为可能受当前语言环境的 LC_TOD 类别影响。

描述

mktime64() 函数将 time所指向的存储的 tm 结构 (假定为作业本地时间) 转换为适合与其他时间函数一起使用的 time64_t 值。 转换后, time64_t 值将被视为全球标准时间 (UTC)。 对于此转换, mktime64() 将检查本地时区和夏令时 (DST) 的当前语言环境设置。 如果未在当前语言环境中设置这些值,那么 mktime64() 将从当前作业获取本地时区和 DST 设置。 如果在语言环境中设置了 DST ,但未设置时区信息,那么将忽略该语言环境中的 DST 信息。 然后, mktime64() 函数使用当前作业的时区信息来确定 UTC。

time 所指向的某些结构元素的值不限于为 gmtime64()显示的范围。

将忽略传递到 mktime64()tm_wdaytm_yday 的值,并在返回时为其分配正确的值。

tm_isdst 的正值或 0 值会导致 mktime() 最初假定 DST 分别在指定时间内生效或未生效。 tm_isdst 的负值会导致 mktime() 尝试确定 DST 是否在指定时间内生效。

注: 此函数支持的日期和时间范围为 0 1/0 1/1 9 7 0 00:00:00 到 1 2/3 1/9 9 9 9 23:59:59。

返回值

mktime64() 函数返回类型为 time64_t的全球标准时间 (UTC)。 如果无法表示全球标准时间,或者如果给定的 time 超出范围,那么将返回值 (time_t) (-1) 。 如果给定的 time 超出范围,那么 errno 设置为 EOVERFLOW。

示例

此示例打印从当前日期起 40 天 16 小时的星期几。
#include <stdio.h>
#include <time.h>
 
char *wday[] = { "Sunday", "Monday", "Tuesday", "Wednesday",
                 "Thursday", "Friday", "Saturday" };
 
int main(void)
{
  time64_t t1, t3;
  struct tm *t2;
 
  t1 = time64(NULL);
  t2 = localtime64(&t1);
  t2 -> tm_mday += 40;
  t2 -> tm_hour += 16;
  t3 = mktime64(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
*/

相关信息