time.h 详细介绍

news/2024/11/29 0:38:20/

time.h 详细介绍

< ctime> (time.h)包含获得和使用日期和时间信息的函数的定义。

一、Macro constants(宏常量)

  • CLOCKS_PER_SEC:滴答声/秒,时间的单位
  • NULL:空指针

二、types(类型)

  • clock_t:时钟类型,表示时钟滴答数的基本数据类型

  • size_t:无符号整型

  • time_t:时间类型,表示时间

  • struct tm:时间结构,包含日历、时间

MemberTypeMeaningRange
tm_secintsecondsafter the minute0-60*
tm_minintminutesafter the hour 0-59
tm_hourinthourssince midnight 0-23
tm_mdayintdayof the month 1-31
tm_monintmonthssince January 0-11
tm_yearintyearssince 1900
tm_wdayintdayssince Sunday 0-6
tm_ydayintdayssince January 1 0-365
tm_isdstintDaylightSaving Time flag

三、时间操作

1、clock_t clock (void);

描述:从特定时间开始消耗的时间,如果失败,返回-1。

/* clock example: frequency of primes */
#include <stdio.h>      /* printf */
#include <time.h>       /* clock_t, clock, CLOCKS_PER_SEC */
#include <math.h>       /* sqrt */int frequency_of_primes (int n) {int i,j;int freq=n-1;for (i=2; i<=n; ++i) for (j=sqrt(i);j>1;--j) if (i%j==0) {--freq; break;}return freq;
}int main ()
{clock_t t;int f;t = clock();printf ("Calculating...\n");f = frequency_of_primes (99999);printf ("The number of primes lower than 100,000 is: %d\n",f);t = clock() - t;printf ("It took me %d clicks (%f seconds).\n",t,((float)t)/CLOCKS_PER_SEC);return 0;
}

2、double difftime (time_t end, time_t beginning);

描述:计算从beginning到end的时间(end-beginning)(单位/秒)。

/* difftime example */
#include <stdio.h>      /* printf */
#include <time.h>       /* time_t, struct tm, difftime, time, mktime */int main ()
{time_t now;struct tm newyear;double seconds;time(&now);  /* get current time; same as: now = time(NULL)  */newyear = *localtime(&now);newyear.tm_hour = 0; newyear.tm_min = 0; newyear.tm_sec = 0;newyear.tm_mon = 0;  newyear.tm_mday = 1;seconds = difftime(now,mktime(&newyear));printf ("%.f seconds since new year in the current timezone.\n", seconds);return 0;
}

3、time_t mktime (struct tm * timeptr);

描述:

  • 返回timeptr指针描述的时间,如果时间未描述,返回-1。

  • localtime的逆变换

  • 忽略结构成员tm_wday and tm_yday;其他成员及时超出有效范围,也将解释。

/* 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;
}

4、time_t time (time_t* timer);

描述:

  • 获取当前时间。

  • 如果时间指针不为NULL,将返回其指向的时间。

  • 不能取得时间,返回-1.

  • 返回的时间基于: 00:00 hours, Jan 1, 1970 UTC

/* time example */
#include <stdio.h>      /* printf */
#include <time.h>       /* time_t, struct tm, difftime, time, mktime */int main ()
{time_t timer;struct tm y2k = {0};double seconds;y2k.tm_hour = 0;   y2k.tm_min = 0; y2k.tm_sec = 0;y2k.tm_year = 100; y2k.tm_mon = 0; y2k.tm_mday = 1;time(&timer);  /* get current time; same as: timer = time(NULL)  */seconds = difftime(timer,mktime(&y2k));printf ("%.f seconds since January 1, 2000 in the current timezone", seconds);return 0;
}

四、转换

1、char* asctime (const struct tm * timeptr);

描述:

返回timeptr指针的时间,用C-字符串描述返回类型为:Www Mmm dd hh:mm:ss yyyy(星期 月 日 时分秒 年)输出在新一行,以空字符串结束
/* asctime example */
#include <stdio.h>      /* printf */
#include <time.h>       /* time_t, struct tm, time, localtime, asctime */int main ()
{time_t rawtime;struct tm * timeinfo;time ( &rawtime );timeinfo = localtime ( &rawtime );printf ( "The current date/time is: %s", asctime (timeinfo) );return 0;
}

2、char* ctime (const time_t * timer);

描述:

返回timer指针的时间,用C-字符串描述返回类型为:Www Mmm dd hh:mm:ss yyyy(星期 月 日 时分秒 年)输出在新一行,以空字符串结束和asctime(localtime(timer))一样
/* ctime example */
#include <stdio.h>      /* printf */
#include <time.h>       /* time_t, time, ctime */int main ()
{time_t rawtime;time (&rawtime);printf ("The current local time is: %s", ctime (&rawtime));return 0;
}

3、struct tm * gmtime (const time_t * timer);

描述:

利用timer填充tm结构体把time_t时间转化为UTC time
/* gmtime example */
#include <stdio.h>      /* puts, printf */
#include <time.h>       /* time_t, struct tm, time, gmtime */#define MST (-7)
#define UTC (0)
#define CCT (+8)int main ()
{time_t rawtime;struct tm * ptm;time ( &rawtime );ptm = gmtime ( &rawtime );puts ("Current time around the World:");printf ("Phoenix, AZ (U.S.) :  %2d:%02d\n", (ptm->tm_hour+MST)%24, ptm->tm_min);printf ("Reykjavik (Iceland) : %2d:%02d\n", (ptm->tm_hour+UTC)%24, ptm->tm_min);printf ("Beijing (China) :     %2d:%02d\n", (ptm->tm_hour+CCT)%24, ptm->tm_min);return 0;
}

4、struct tm * localtime (const time_t * timer);

描述:

利用timer填充tm结构体把time_t时间转化为 local time
/* localtime example */
#include <stdio.h>      /* puts, printf */
#include <time.h>       /* time_t, struct tm, time, localtime */int main ()
{time_t rawtime;struct tm * timeinfo;time (&rawtime);timeinfo = localtime (&rawtime);printf ("Current local time and date: %s", asctime(timeinfo));return 0;
}

5、·size_t strftime (char* ptr, size_t maxsize, const char* format,const struct tm* timeptr );

描述:

把timeptr中的时间,以特定的格式,复制到ptr中以format格式,复制时间timeptr到ptr,最多maxsize字符。ptr:目的数组,存储C-字符串maxsize:包括末尾空字符,复制到ptr的最大字符数format:格式返回值:返回复制到ptr的字符数(不包括末尾空字符),若超出范围maxsize,返回0
/* strftime example */
#include <stdio.h>      /* puts */
#include <time.h>       /* time_t, struct tm, time, localtime, strftime */int main ()
{time_t rawtime;struct tm * timeinfo;char buffer [80];time (&rawtime);timeinfo = localtime (&rawtime);strftime (buffer,80,"Now it's %I:%M%p.",timeinfo);puts (buffer);return 0;
}
specifierReplaced byExample
%aAbbreviatedweekday name *
%AFull weekday name *Thursday
%bAbbreviated month name *Aug
%BFull month name *August
%cDate and time representation *Thu Aug 23 14:55:02 2001
%CYear divided by 100 and truncated to integer (00-99)20
%dDay of the month, zero-padded (01-31)23
%DShort MM/DD/YY date, equivalent to %m/%d/%y08/23/01
%eDay of the month, space-padded ( 1-31)23
%FShort YYYY-MM-DD date, equivalent to %Y-%m-%d2001-08-23
%gWeek-based year, last two digits (00-99)01
%GWeek-based year2001
%hAbbreviated month name * (same as %b)Aug

http://www.ppmy.cn/news/261258.html

相关文章

HI3516A/Hi3516D H265流结构分析

HI3516A/Hi3516D H265 ES流结构分析 通过录制H265的ES流&#xff0c;保存为文件&#xff0c;经过VLC(版本为V2.2.1),播放可以正常显示。在文件中查找00 00 00 01NALU头&#xff0c;发现在有6种开头分别为&#xff1a; 1&#xff09;00 00 00 01 40 01 2&#xff09;00 00 00 01…

机器人学回炉重造(1):正运动学、标准D-H法与改进D-H法的区别与应用(附ABB机械臂运动学建模matlab代码)

写在前面 学习代码都记录在个人github上&#xff0c;欢迎关注~ 书读百遍&#xff0c;其义自见。 要想当一名合格的机器人工程师&#xff0c;机器人学就是base_link&#xff0c;看多少遍都不为过。现在回炉重造一下&#xff0c;记录一下学习笔记&#xff08;以照片形式&#…

计算机中h是几进制,16进制后面用H表示,其他进制的用什么表示

16进制后面用H表示,其他进制的用什么表示以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 16进制后面用H表示,其他进制的用什么表示, 为什么100H是表示16进制的二进制数,其他的怎么表示 H表示16进制呀后缀H表示…

实验5、D/A转换实验

实验内容 基础部分&#xff1a; 1、编写程序&#xff0c;产生周期的锯齿波、矩形波、三角波和阶梯波&#xff0c;经D/A转换&#xff0c;显示在软件模拟示波器上。(要求&#xff1a;每种波形的周期数、阶梯波的阶梯数可通过参数设置。) 拓展部分&#xff1a; 2在软件模拟示波器上…

机械臂D-H坐标系的建立

正解与逆解的求解需要相应的机器人运动方程&#xff0c;其中关键的就是DH参数表 DH参数表用来描述机器人各关节坐标系之间的关系&#xff0c;有了DH参数表就可以在机器人各关节之间进行坐标转换 求解正解就是从关节1到关节5的坐标转换 基本知识 &#xff1a; 关节&#xff1a…

H无穷控制学习笔记——H无穷/H2控制

一、 H ∞ / H 2 H_{\infty}/H_2 H∞​/H2​控制问题 实际设计过程中&#xff0c;人们常常需要系统满足多项性能要求。 对于这样的系统&#xff1a; x ˙ A x B u B 1 w 1 B 2 w 2 z 1 C 1 x D 10 u D 11 w 1 z 2 C 2 x D 20 u D 22 w 2 \dot xAxBuB_1w_1B_2w_2\\ …

df -h无响应问题解决

一、问题描述 1、linux下执行df -h 查看已挂在各分区的空间和目录情况&#xff0c;但执行后无反馈 二、影响 1、由于脚本程序调用df -h 判断磁盘空间情况进行日志等清理&#xff0c;故障导致磁盘空间占满不能清理&#xff0c;服务器不能访问。 三、问题分析 1、df -h和分区…

机器人运动学_不同D-H矩阵的对比

机器人运动学_不同D-H矩阵的对比 edit by XZF 在机器人学的运动学分析中&#xff0c;D-H矩阵是正运动学分析的基础&#xff0c;而对于如何建立D-H举证的连杆坐标系&#xff0c;有不同的方法&#xff0c;本文主要介绍其中的两种&#xff0c;并对这两种方法做下对比与分析。 …