原创作品,转载请注明来源:http://www.cnblogs.com/shrimp-can/p/5649487.html
一、定义的类型
1.clock_t:时钟类型
2.size_t:unsigned int
3.time_t:时间类型
4.struct tm:结构,成员如下:
Member | Type | Meaning | Range |
---|---|---|---|
tm_sec | int | seconds after the minute | 0-60* |
tm_min | int | minutes after the hour | 0-59 |
tm_hour | int | hours since midnight | 0-23 |
tm_mday | int | day of the month | 1-31 |
tm_mon | int | months since January | 0-11 |
tm_year | int | years since 1900 | |
tm_wday | int | days since Sunday | 0-6 |
tm_yday | int | days since January 1 | 0-365 |
tm_isdst | int | Daylight Saving Time flag |
二、定义的宏
1.NULL:空指针
2.CLOCKS_PER_SEC:每秒的时钟周期
三、时间操作函数
1.clock:clock_t clock (void);
返回当前时钟周期,转换为s除以CLOCKS_PER_SEC
2.difftime:double difftime (time_t end, time_t beginning);
计算geginning和end之间的时间单位秒
3.mktime:time_t mktime (struct tm * timeptr);
返回timeptr指向的时间,timeptr也会更新其他的。
time_t rawtime;
struct tm * timeinfo;
int year, month ,day;
const char * weekday[] = { "Sunday", "Monday",
"Tuesday", "Wednesday",
"Thursday", "Friday", "Saturday"};
printf ("Enter year: "); fflush(stdout); scanf ("%d",&year);
printf ("Enter month: "); fflush(stdout); scanf ("%d",&month);
printf ("Enter day: "); fflush(stdout); scanf ("%d",&day);
time ( &rawtime );
timeinfo = localtime ( &rawtime );
timeinfo->tm_year = year - 1900;
timeinfo->tm_mon = month - 1;
timeinfo->tm_mday = day;
mktime ( timeinfo );
printf ("That day is a %s.\n", weekday[timeinfo->tm_wday]);
输出为:
Enter year: 2000 Enter month: 5 Enter day: 20 That day is a Saturday.
4.time:time_t time (time_t* timer);
得到当前的日历时间,存储在timer中,如果获取失败返回空指针,成功返回当前日历时间
四、时间转化相关函数
1.asctime:char* asctime (const struct tm * timeptr);
将tm类型的时间转化为字符串的形式,返回的字符串如Www Mmm dd hh:mm:ss yyyy
2.ctime:char* ctime (const time_t * timer);
将time_t类型的时间转化为字符串的形式,返回的字符串如:Www Mmm dd hh:mm:ss yyyy
3.gmtime:struct tm * gmtime (const time_t * timer);
将time_t的时间类型转化为UTC时间,相应的时间存储在结构tm中
4.localtime:struct tm * localtime (const time_t * timer);
使用timer中的时间填充localtime
5.strftime:size_t strftime (char* ptr, size_t maxsize, const char* format, const struct tm* timeptr );
将结构tm描述的时间按format格式拷贝到字符串ptr中,最大maxsize字符。formate格式如下:
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);
输出为:
Now it's 03:21PM.
specifier | Replaced by | Example |
---|---|---|
%a | Abbreviated weekday name * | Thu |
%A | Full weekday name * | Thursday |
%b | Abbreviated month name * | Aug |
%B | Full month name * | August |
%c | Date and time representation * | Thu Aug 23 14:55:02 2001 |
%C | Year divided by 100 and truncated to integer (00-99 ) | 20 |
%d | Day of the month, zero-padded (01-31 ) | 23 |
%D | Short MM/DD/YY date, equivalent to %m/%d/%y | 08/23/01 |
%e | Day of the month, space-padded ( 1-31 ) | 23 |
%F | Short YYYY-MM-DD date, equivalent to %Y-%m-%d | 2001-08-23 |
%g | Week-based year, last two digits (00-99 ) | 01 |
%G | Week-based year | 2001 |
%h | Abbreviated month name * (same as %b ) | Aug |
%H | Hour in 24h format (00-23 ) | 14 |
%I | Hour in 12h format (01-12 ) | 02 |
%j | Day of the year (001-366 ) | 235 |
%m | Month as a decimal number (01-12 ) | 08 |
%M | Minute (00-59 ) | 55 |
%n | New-line character ('\n' ) | |
%p | AM or PM designation | PM |
%r | 12-hour clock time * | 02:55:02 pm |
%R | 24-hour HH:MM time, equivalent to %H:%M | 14:55 |
%S | Second (00-61 ) | 02 |
%t | Horizontal-tab character ('\t' ) | |
%T | ISO 8601 time format (HH:MM:SS ), equivalent to %H:%M:%S | 14:55:02 |
%u | ISO 8601 weekday as number with Monday as 1 (1-7 ) | 4 |
%U | Week number with the first Sunday as the first day of week one (00-53 ) | 33 |
%V | ISO 8601 week number (00-53 ) | 34 |
%w | Weekday as a decimal number with Sunday as 0 (0-6 ) | 4 |
%W | Week number with the first Monday as the first day of week one (00-53 ) | 34 |
%x | Date representation * | 08/23/01 |
%X | Time representation * | 14:55:02 |
%y | Year, last two digits (00-99 ) | 01 |
%Y | Year | 2001 |
%z | ISO 8601 offset from UTC in timezone (1 minute=1, 1 hour=100) If timezone cannot be determined, no characters | +100 |
%Z | Timezone name or abbreviation * If timezone cannot be determined, no characters | CDT |
%% | A % sign | % |
参考:http://www.cplusplus.com/reference/ctime/