Question

I don't understand, why this doesn't work? PS: I found this piece of code from some google!

Problem: I don't know why it should work? Does this consider timezone as well?!

  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 }
Was it helpful?

Solution

It was false assumption.

This is how I did:

 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);

Then one can use struct tm and mktime.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top