Home C&C++函数库 c++ 语法 程序源码 Linux C库

mktime

函数   <ctime>

time_t mktime (struct tm * timeptr);

将tm结构转换为time_t

返回类型为time_t的值,该值表示由timeptr(可以修改)所指向的tm结构描述的本地时间。

这个函数是localtime执行的反向转换。

timeptr的成员tm_wday和tm_yday的值会被忽略,而其他成员的值即使超出了它们的有效范围也会被解释 (参见struct tm)。例如,tm_mday可能包含大于31的值,这些值被相应地解释为所选月份的最后一天之后的天数。

如果timeptr成员的值不在范围内,或者(在tm_wday和tm_yday的情况下) 它们的值与其他成员描述的日期不匹配,则对这个函数的调用将自动调整它们的值。

☲  参数


timeptr
指向tm结构的指针,该结构包含分解为组件的日历时间(参见struct tm)。

☉  返回值



一个time_t值,对应于作为参数传递的日历时间。
如果无法表示日历时间,则返回-1值。

☣  示例



/* mktime example: weekday calculator */
#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[] = { "Sunday", "Monday",
                             "Tuesday", "Wednesday",
                             "Thursday", "Friday", "Saturday"};

  /* prompt user for date */
  printf ("Enter year: "); fflush(stdout); scanf ("%d",&year);
  printf ("Enter month: "); fflush(stdout); scanf ("%d",&month);
  printf ("Enter day: "); fflush(stdout); scanf ("%d",&day);

  /* get current timeinfo and modify it to the user's choice */
  time ( &rawtime );
  timeinfo = localtime ( &rawtime );
  timeinfo->tm_year = year - 1900;
  timeinfo->tm_mon = month - 1;
  timeinfo->tm_mday = day;

  /* call mktime: timeinfo->tm_wday will be set */
  mktime ( timeinfo );

  printf ("That day is a %s.\n", weekday[timeinfo->tm_wday]);

  return 0;
}

输出:
Enter year: 2000
Enter month: 5
Enter day: 20
That day is a Saturday.

↭  数据竞争



timeptr所指向的对象将被访问,并可能被修改。

❆  异常(c++)



无抛出保证:此函数从不抛出异常。

🍄  另请参阅



time 获取当前时间(function )
asctime 转换tm结构为字符串(function )
gmtime 将time_t转换为tm作为UTC时间(function )
localtime 将time_t转换为tm作为当地时间(function )

联系我们 免责声明 关于CandCplus 网站地图