欢迎访问宙启技术站
智能推送

时间转换函数 strftime() 的使用方法和示例

发布时间:2023-06-12 05:11:16

strftime() 是 C 库中的一个函数,用于将时间按照指定的格式输出。其中,strftime()的参数包括两个,分别是目标字符串的缓冲区和格式化字符串。目标字符串的缓冲区用来存储由格式化字符串格式化过的时间值,格式化字符串则决定了时间的输出格式。

strftime()函数使用的格式化字符串中包含了一些占位符,这些占位符会被转换成对应的时间属性,例如年、月、日、时、分、秒等等。下面是一些占位符的示例:

| 占位符 | 描述 |

| ---- | ------------- |

| %a | 缩写的星期几名称 |

| %A | 完整的星期几名称 |

| %b | 缩写的月份名称 |

| %B | 完整的月份名称 |

| %c | 不带前导零的月份和日,以及小时、分钟、秒的时间 |

| %C | 世纪数,以两位数字表示 |

| %d | 日期,以两位数字表示 |

| %D | 等同于 %m/%d/%y |

| %e | 日期,以一个或两个空格加上一个数字表示 |

| %F | 等同于 %Y-%m-%d |

| %g | ISO 年份的最后两位 |

| %G | ISO 年份 |

| %h | 等同于 %b |

| %H | 小时,以两位数字表示 |

| %I | 小时,以十二小时制表示 |

| %j | 年份的第几天,以三位数字表示 |

| %k | 小时,以一个或两个空格加上一个数字表示 |

| %l | 小时,以十二小时制表示 |

| %m | 月份,以两位数字表示 |

| %M | 分钟,以两位数字表示 |

| %n | 换行符 |

| %p | AM 或 PM |

| %r | 等同于 %I:%M:%S %p |

| %R | 等同于 %H:%M |

| %S | 秒数,以两位数字表示 |

| %t | 制表符 |

| %T | 等同于 %H:%M:%S |

| %u | 以数字表示的星期几,1 表示星期一 |

| %U | 年份的第几周,以两位数字表示 |

| %V | ISO 年份的第几周,以两位数字表示 |

| %w | 星期几名称的数字表示,0 表示星期天 |

| %W | 年份的第几周,以两位数字表示 |

| %x | 不带时分秒的日期 |

| %X | 不带日期的时分秒 |

| %y | 年份的最后两位数字 |

| %Y | 年份,以四位数字表示 |

| %z | 时区偏移量 |

| %Z | 时区名称 |

| %% | 百分号 |

下面是一些使用示例:

1. 将当前时间以 YYYY-MM-DD HH:MM:SS 的格式输出:

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

int main() {
    time_t current_time;
    struct tm * time_info;
    char time_string[20];
    
    time(&current_time);
    time_info = localtime(&current_time);
    strftime(time_string, sizeof(time_string), "%Y-%m-%d %H:%M:%S", time_info);
    printf("%s
", time_string);
    
    return 0;
}

输出结果如下:

2021-06-18 10:25:37

2. 将当前时间以周几,月份和日期的格式输出:

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

int main() {
    time_t current_time;
    struct tm * time_info;
    char time_string[20];
    
    time(&current_time);
    time_info = localtime(&current_time);
    strftime(time_string, sizeof(time_string), "%a, %b %d", time_info);
    printf("%s
", time_string);
    
    return 0;
}

输出结果如下:

Fri, Jun 18

3. 将当前时间以 DD-MM-YYYY 的格式输出:

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

int main() {
    time_t current_time;
    struct tm * time_info;
    char time_string[20];
    
    time(&current_time);
    time_info = localtime(&current_time);
    strftime(time_string, sizeof(time_string), "%d-%m-%Y", time_info);
    printf("%s
", time_string);
    
    return 0;
}

输出结果如下:

18-06-2021

4. 将当前时间以 HH:MM:SS 的格式输出:

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

int main() {
    time_t current_time;
    struct tm * time_info;
    char time_string[20];
    
    time(&current_time);
    time_info = localtime(&current_time);
    strftime(time_string, sizeof(time_string), "%H:%M:%S", time_info);
    printf("%s
", time_string);
    
    return 0;
}

输出结果如下:

10:25:37

在这些示例中,我们可以看到 strftime() 的使用方法以及如何使用占位符来格式化时间。通过参考占位符表格,我们可以将时间在需要的位置按照需要的格式输出。同时,strftime() 函数还支持更多的参数选项,例如使用国际化的字符集、指定时区等等。在实际的应用中,需要根据具体的需求来选取并使用适当的格式化方式。