Я делаю следующее, чтобы преобразовать и проверить дату, однако я не уверен, почему следующая дата продолжает проверяться как истинная.
Разве %d
не будет проверять только [01,31] + ведущие нули
? Есть ли лучший и более точный способ сделать это?
#include <time.h>
#include <stdio.h>
#include <stdlib.h>
int main () {
struct tm tm;
char buffer [80];
char *str = "29/Jan/2012";
if (strptime (str, "%Y/%b/%d", &tm) == NULL)
exit(EXIT_FAILURE);
if (strftime (buffer,80,"%Y-%m-%d",&tm) == 0)
exit(EXIT_FAILURE);
printf("%s\n", buffer); // prints 29-01-20
return 0;
}