这两个时间函数原型如下:
char *__cdecl asctime(const struct tm *_Tm);
__CRT_INLINE struct tm *__cdecl localtime(const time_t *_Time);
asctime函数可以将时间结构体转换为时间字符串格式。它的参数是一个时间结构体。结构体原型如下:
struct tm {
int tm_sec; /* 秒,范围从 0 到 59 */
int tm_min; /* 分,范围从 0 到 59 */
int tm_hour; /* 小时,范围从 0 到 23 */
int tm_mday; /* 一月中的第几天,范围从 1 到 31 */
int tm_mon; /* 月份,范围从 0 到 11 */
int tm_year; /* 自 1900 起的年数 */
int tm_wday; /* 一周中的第几天,范围从 0 到 6 */
int tm_yday; /* 一年中的第几天,范围从 0 到 365 */
int tm_isdst; /* 夏令时 */
};
它的返回值是一个 C 字符串,包含了可读格式的日期和时间信息 Www Mmm dd hh:mm:ss yyyy,其中,Www 表示星期几,Mmm 是以字母表示的月份,dd 表示一月中的第几天,hh:mm:ss 表示时间,yyyy 表示年份。
下面通过一个简单的例子来演示一下这个函数的用法。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(int argc, char** argv)
{
struct tm t;
t.tm_sec = 10;
t.tm_min = 30;
t.tm_hour = 15;
t.tm_mday = 23;
t.tm_mon = 0;
t.tm_year = 122;
t.tm_wday = 0;
printf("%s ",asctime(&t));
return 0;
}
定义一个时间结构体,然后初始化结构体中的变量,将这个结构体传入到asctime函数中,函数就会返回一个时间字符串,通过printf函数将字符串打印出来。
这里的日期和月份都是用英文缩写来表示的。
星期缩写为:Sun
、Mon
、Tue
、Wed
、Thu
、Fri
、Sat
。
月份缩写为:Jan
、Feb
、Mar
、Apr
、May
、Jun
、Jul
、Aug
、Sep
、Oct
、Nov
、Dec
。
localtime函数的作用就是使用 timer
的值来填充 tm
结构体,而这个timer
的值可以通过time函数来获取。而这个tm
结构体刚好就是asctime函数的参数,所以一般情况下localtime函数都是其他时间函数配合使用的。
下面通过一个简单的例子来演示一下 localtime函数的用法。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(int argc, char** argv)
{
time_t now_time;
struct tm *t;
time(&now_time);
t = localtime(&now_time);
printf("%s ",asctime(t));
return 0;
}
首先通过time函数获取是从 1970-01-01 00:00:00 开始到现在所经过的秒数,然后将这个秒数传入localtime函数中,该函数将秒数值整理后返回给时间结构体tm
,最后再将这个时间结构体传入到 asctime函数中,该函数将时间结构体的值整理为字符串打印出来。程序运行结果如下:
通过time、localtime、 asctime这三个函数的配合,就可以将当前系统的时间转换为字符串打印出来。
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://hxydj.blog.csdn.net/article/details/122961926
内容来源于网络,如有侵权,请联系作者删除!