Парсинг даты в C

нужно спарсить дату время в следующем формате 2021-10-11T09:00:00+00:00 первое что пришло в голову использовать sscanf есть ли решения понадежней?


Ответы (1 шт):

Автор решения: Sergey

Если надо разобрать строку с датой на элементы, то используем strptime(...). Если наооборот, надо создать строку заданного формата, то используем strftime(...).

Пример для обоих вариантов:

#define _XOPEN_SOURCE
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>

int  main(void) {
   struct tm tm;
   char buf[255];

   memset(&tm, 0, sizeof(struct tm));
   strptime("2001-11-12 18:31:01", "%Y-%m-%d %H:%M:%S", &tm);
   strftime(buf, sizeof(buf), "%d %b %Y %H:%M", &tm);
   puts(buf);
   exit(EXIT_SUCCESS);
}

Как уже отметил fat-zer, это работает при поддержке POSIX.

→ Ссылка