strtoul для преобразования из строковой даты ("10.03.2013 14:01:00") в time_t
Я не понимаю, почему это не работает? PS: я нашел этот кусок кода от какого-то Google!
Проблема: я не знаю, почему это должно работать? Это учитывает и часовой пояс?!
1 #include<stdio.h>
2 #include <stdlib.h>
3 #include <string>
4 #include <time.h>
5 int main()
6 {
7 std::string text("10/10/2013 14:01:00");
8 const char* nptr = text.c_str();
9 char* endptr = NULL;
10 time_t seconds_from_epoch = strtoul(nptr, &endptr, 0);
11 if (secs != 0)
12 printf("Secs: %ld\n", secs);
13 if (*nptr != '\0' && endptr && *endptr == '\0') {
14 printf("Secs: %ld\n", secs);
15 } else {
16 printf("Unable to convert\n");
17 }
18 }
1 ответ
Решение
Это было ложное предположение.
Вот как я это сделал:
21 printf("************************\n");
22 int day, month, yr, hr, min, sec, tzone;
23 char* more = (char *)nptr;
24 month = strtol(more, &more, 10);
25 day = strtol(more+1, &more, 10);
26 yr = strtol(more+1, &more, 10);
27 hr = strtol(more+1, &more, 10);
28 min = strtol(more+1, &more, 10);
29 sec = strtol(more+1, &more, 10);
30 tzone = strtol(more+1, &more, 10);
31
32 printf("Month: %d, Day: %d, Year: %d, Hour: %d, Min: %d, Sec: %d, Tzone: %d\n",
33 month, day, yr, hr, min, sec, tzone);
Тогда можно использовать struct tm и mktime.