文章目录
- 1 函数原型
- 2 参数
- 3 返回值
- 4 示例
- 4.1 示例1
- 4.2 示例2
1 函数原型
asctime():时间类型转换,函数原型如下:
char* asctime (const struct tm * timeptr);
ctime()库描述如下:
Convert tm structure to string
1. Interprets the contents of the tm structure pointed by timeptr as a calendar time and converts it to a C-string containing a human-readable version of the corresponding date and time.
2. The returned string has the following format:
Www Mmm dd hh:mm:ss yyyy
3. Where Www is the weekday, Mmm the month (in letters), dd the day of the month, hh:mm:ss the time, and yyyy the year.
4. The string is followed by a new-line character ('\n') and terminated with a null-character.
5. For an alternative with custom date formatting, see strftime.
- asctime()函数:
(1)用于将struct tm类型的时间结构转换为可读的字符串;
(2)字符串包含本地日期和时间信息,格式是固定的:“Www Mmm dd hh:mm:ss yyyy”+“\0\n”,共26个字符。
2 参数
ctime()函数只有一个参数timeptr:
- 参数timer是一个指向struct tm结构体的指针,类型为struct tm*;timer指向的结构体包含要转换的日期和时间信息。
ctime库描述如下:
timeptr
1. Pointer to a tm structure that contains a calendar time broken down into its components (see struct tm).
3 返回值
asctime()函数的返回值类型为char*型:
- 转换成功,返回一个指向静态字符串的指针,该字符串含了转换后的本地日期和时间信息。
特别说明
2. 静态字符串是指字符串的存储空间在程序开始时分配,并在程序结束时释放,在程序运行期间其生命周期是静态的;
3. 同一程序中所有的ctime()函数和asctime()函数共享同一个静态字符串;每次调用ctime()函数或asctime()函数时,都会擦写、更新或覆盖静态字符串的原有内容;
4. 如果要保存静态字符串的原有内容,必须在程序中单独声明一个字符数组,在每次调用ctime()函数或asctime()函数后,将静态字符串的原有内容拷贝至新的字符数组中。
ctime()库描述如下:
1. A C-string containing the date and time information in a human-readable format.
2. The returned value points to an internal array whose validity or value may be altered by any subsequent call to asctime or ctime.
4 示例
4.1 示例1
示例代码如下所示:
int main() {
//
time_t current_time = 0;
char* time_string = NULL;
struct tm* current_tiem_tm = NULL;
// 获取当前时间
current_time = time(NULL);
// 将时间转换为本地时间结构
current_tiem_tm = localtime(¤t_time);
// 将time_t时间转换为字符串
time_string = ctime(¤t_time);
// 输出结果
printf("ctime() 函数返回值 = %p\n", time_string);
// 将struct tm时间转换为字符串
time_string = asctime(current_tiem_tm);
// 输出结果
printf("asctime()函数返回值 = %p\n", time_string);
//
return 0;
}
代码运行结果如下图所示:
代码及运行结果分析如下:
- ctime()函数和asctime()函数的返回值是指针,两指针值相同说明指向的是同一片内存空间,即两函数维护的是同一个静态字符串。
4.2 示例2
示例代码如下所示:
int main() {
//
time_t current_time = 0;
char* time_string = NULL;
struct tm* current_tiem_tm = NULL;
// 获取当前时间
current_time = time(NULL);
// 将时间转换为本地时间结构
current_tiem_tm = localtime(¤t_time);
// 将time_t时间转换为字符串
time_string = ctime(¤t_time);
// 输出结果
printf("当前时间 : %s", time_string);
// 将struct tm时间转换为字符串
time_string = asctime(current_tiem_tm);
// 输出结果
printf("当前时间 : %s", time_string);
//
return 0;
}
代码运行结果如下图所示: