J'ai du mal à trouver un moyen d'analyser le fuseau horaire dans des chaînes de caractères comme celles qui suivent : "Thu, 1 Sep 2011 09:06:03 -0400 (EDT)"
Ce que je dois faire dans le cadre plus large de mon programme est de prendre un char* et de le convertir en un time_t. Ce qui suit est un simple programme de test que j'ai écrit pour essayer de déterminer si strptime tenait compte du fuseau horaire, et il semble que ce ne soit pas le cas (lorsque ce programme de test est exécuté, tous les chiffres imprimés sont les mêmes alors qu'ils devraient être différents). Des suggestions ?
J'ai également essayé d'utiliser GNU getdate et getdate_r, parce que cela semble être une meilleure option pour des formats éventuellement flexibles, mais j'ai reçu un avertissement "déclaration de fonction implicite" du compilateur, ce qui implique que je n'ai pas inclus les bonnes bibliothèques. Y a-t-il quelque chose d'autre que je devrais #inclure pour utiliser getdate ?
#include <string.h>
#include <stdlib.h>
#include <strings.h>
#include <stdio.h>
#ifndef __USE_XOPEN
#define __USE_XOPEN
#endif
#include <time.h>
int main (int argc, char** argv){
char *timestr1, *timestr2, *timestr3;
struct tm time1, time2, time3;
time_t timestamp1, timestamp2, timestamp3;
timestr1 = "Thu, 1 Sep 2011 09:06:03 -0400 (EDT)"; // -4, and with timezone name
timestr2 = "Thu, 1 Sep 2011 09:06:03 -0000"; // -0
strptime(timestr1, "%a, %d %b %Y %H:%M:%S %Z", &time1); //includes UTC offset
strptime(timestr2, "%a, %d %b %Y %H:%M:%S %Z", &time2); //different UTC offset
strptime(timestr1, "%a, %d %b %Y %H:%M:%S", &time3); //ignores UTC offset
time1.tm_isdst = -1;
timestamp1 = mktime(&time1);
time2.tm_isdst = -1;
timestamp2 = mktime(&time2);
time3.tm_isdst = -1;
timestamp3 = mktime(&time3);
printf("Hello \n");
printf("%d\n%d\n%d\n", timestamp1, timestamp2, timestamp3);
printf("Check the numbers \n");
return 0;
}