当前位置: C语言 -- 标准库 -- <time.h> -- asctime

asctime函数


概要:
#include <time.h>
char *asctime(const struct tm *timeptr);

描述:

该函数将参数timeptr指向结构中的分解时间转换为以下格式的字符串:

Sun Jul 16 19:30:25 2017\n\0

这种转换等价于使用以下算法:

char *asctime(const struct tm *timeptr)
{
    static const char wday_name[7][3] = {
        "Sun","Mon","Tue","Wed","Thu","Fri","Sat"
    };
    
    static const char mon_name[12][3] = {
        "Jan","Feb","Mar","Apr","May","Jun",
        "Jul","Aug","Sep","Oct","Nov","Dec"
    };
    
    static char result[26];
    
    sprintf(result,"%.3s %.3s%3d %.2d:%.2d:%.2d %d\n",
            wday_name[timeptr->tm_wday],
            mon_name[timeptr->tm_mon],
            timeptr->tm_mday,
            timeptr->tm_hour,
            timeptr->tm_min,
            timeptr->tm_sec,
            1900 + timeptr->tm_year
            );
            
    return result;
}

如果参数timeptr指向对象的任何结构成员值超出了有效范围asctime函数的行为是未定义的;如果计算的年份超过4位数或者小于1000,函数行为同样是未定义的。

同一线程中asctime函数调用和ctime函数调用返回的指针指向相同的静态对象。asctime函数调用可能会覆盖先前asctime函数或者ctime函数调用的数据,并且asctime函数不需要避免数据竞争。实现应像没有库函数调用asctime函数一样。

ISO/IEC 9899:2018标准定义了该函数的安全版本asctime_s


参数:
const struct tm *timeptr

参数为一个指向struct tm类型对象的指针。


返回值:

函数返回一个指向字符串的指针。


范例:
1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
16 
17 
18 
19 
20 
21 
22 
/*函数asctime范例*/

#include <stdio.h>
#include <time.h>

int main(void)
{
   const struct tm currentTime = {
        .tm_year = 117,
        .tm_mon = 6,
        .tm_mday = 16,
        .tm_wday = 0,
        .tm_hour = 19,
        .tm_min = 30,
        .tm_sec = 25
    };

    printf("Current time:%s\n", asctime(&currentTime));

    return 0;
}


输出:

Current time:Sun Jul 16 19:30:25 2017


相关内容:
struct tm 表示分解时间的结构类型。