I am trying to compile some code originally written in linux on my Windows machine. I have Cygwin installed and setup for use within CodeBlocks, and it works mostly. All except a call to strptime, which greets me with "error: 'strptime' was not delcared in this scope." I've been googling for a while now to no avail, please could someone explain what might be wrong? I've tried including time.h but no luck.
#ifndef _XOPEN_SOURCE
#define _XOPEN_SOURCE
#endif
#include <ctime>
#include <cstring>
class Date {
private:
struct tm _tm;
string strform;
static void set_zero(struct tm &_tm) {
memset(&_tm, '\0', sizeof(struct tm));
// _tm.hour = 0;
}
time_t make_time() {
return mktime(&_tm);
}
public:
Date() {
time_t current = time(NULL);
_tm = *gmtime(¤t);
char buffer[1024];
strftime(buffer, 1024, "%b %e %Y", &_tm);
strform = buffer;
}
Date(time_t current) {
_tm = *gmtime(¤t);
char buffer[1024];
strftime(buffer, 1024, "%b %e %Y", &_tm);
strform = buffer;
}
Date(string _strform) {
strform = _strform;
set_zero(_tm);
char *result = strptime(strform.c_str(), "%b %e %Y", &_tm);
assert(result);
char buffer[1024];
strftime(buffer, 1024, "%b %e %Y", &_tm);
strform = buffer;
//cout << "strform = " << strform << endl;
// cout << "length = " << result - strform.c_str() << endl;
// cout << "day = " << _tm.tm_mday << endl;
// cout << "month = " << _tm.tm_mon << endl;
// cout << "year = " << _tm.tm_year << endl;
// char buffer[1024];
// strftime(buffer, 1024, "%b %e %Y %H:%M:%S", &_tm);
// cout << "buffer = " << buffer << endl;
}
Date operator-(int days) {
return Date(make_time() - days*86400 );
}
time_t operator-(Date &other) {
return (make_time() - other.make_time())/86400.0;
}
bool operator<=(Date &other) {
return make_time() <= other.make_time();
}
bool operator<(Date &other) {
return make_time() < other.make_time();
}
bool operator>=(Date &other) {
return make_time() >= other.make_time();
}
time_t to_seconds() {
return make_time();
}
friend ostream &operator<< (ostream &out, const Date &d) {
return out << d.strform;
}
static Date today() {
return Date();
}
string to_string() const {
return strform;
}
const char *to_cstring() const {
return strform.c_str();
}
};