Функция библиотеки C -strftime()
Стандартная библиотека C - <time.h>
Описание
Функции библиотеки Csize_t strftime(char *str, size_t maxsize, const char *format, const struct tm *timeptr)Согласноformatправилам форматирования и структуре форматирования, определённым вtimeptrпредставленное время и сохранить его вstrВ.
Объявление
Ниже приведено объявление функции strftime().
size_t strftime(char *str, size_t maxsize, const char *format, const struct tm *timeptr)
Параметр
- str-- это указатель на массив назначения, используемый для копирования результирующей C-строки.
- maxsize-- это максимальное количество символов, которое должно быть скопировано в str.
- format-- Это C-строка, содержащая любую комбинацию обычных символов и специальных спецификаторов формата. Эти спецификаторы формата заменяются функцией на значения, представляющие время, указанное в tm. Спецификаторы формата:
| Спецификатор | Заменяется на | Пример |
|---|---|---|
| %a | Сокращенное название дня недели | Вс |
| %A | Полное название дня недели | Sunday |
| %b | Сокращенное название месяца | Мар |
| %B | Полное название месяца | Март |
| %c | Представление даты и времени | Вс Авг 19 02:56:02 2012 |
| %d | День месяца (01-31) | 19 |
| %H | Час в 24-часовом формате (00-23) | 14 |
| %I | Час в 12-часовом формате (01-12) | 05 |
| %j | День года (001-366) | 231 |
| %m | Месяц в виде десятичного числа (01-12) | 08 |
| %M | Минута (00-59) | 55 |
| %p | Название AM или PM | PM |
| %S | Секунда (00-61) | 02 |
| %U | Неделя года, при этом первое воскресенье считается первым днем первой недели (00-53) | 33 |
| %w | День недели в виде десятичного числа, воскресенье представлено как 0 (0-6) | 4 |
| %W | Неделя года, при этом первый понедельник считается первым днем первой недели (00-53) | 34 |
| %x | Представление даты | 08/19/12 |
| %X | Представление времени | 02:50:06 |
| %y | Год, последние две цифры (00-99) | 01 |
| %Y | Год | 2012 |
| %Z | Название или аббревиатура часового пояса | CDT |
| %% | Знак % | % |
- timeptr-- Это указатель на структуру tm, которая содержит календарное время, разбитое на следующие части:
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-строка содержит меньше size символов (включая завершающий нулевой символ), возвращается общее количество символов, скопированных в str (исключая завершающий нулевой символ); в противном случае возвращается ноль.
Пример
В следующем примере демонстрируется использование функции strftime().
Пример
#include <stdio.h>
#include <time.h>
int main ()
{
time_t rawtime;
struct tm *info;
char buffer[80];
time( &rawtime );
info = localtime( &rawtime );
strftime(buffer, 80, "%Y-%m-%d %H:%M:%S", info);
printf("Форматированная дата и время : |%s|\n", buffer );
return(0);
}
Давайте скомпилируем и запустим приведённую выше программу, которая выдаст следующий результат:
格式化的日期 & 时间 : |2018-09-19 08:59:07|Другие расширения