C ++ 11
Имеет кроссплатформенный код с использованием std :: mktime в Ununtu 18 (x64) и QNX (x64)
В Ubuntu все в порядке.Но на QNX mktime возвращает -1.errno = 3 Что не так?
#include <iostream>
#include "ctime"
int main(int argc, char *argv[]){
const std::string token = "100901";
std::string dd = token.substr( 0, 2 );
std::string mm = token.substr( 2, 2 );
std::string yy = token.substr( 4, 2 );
struct std::tm date_tm = {};
date_tm.tm_mday = std::stoi( dd);
date_tm.tm_mon = std::stoi( mm) - 1;
date_tm.tm_year = std::stoi( yy) + 100;
if (std::mktime( &date_tm ) == -1);
{
std::cout << "Error";
}
return 0;
}
PS Пробовал init struct tm как:
struct std::tm date_tm = {0};
std::memset( &date_tm, 0, sizeof( date_tm ) )
Некоторые примечания:
1) если я звоню mktime дважды - все будет хорошо (получит время)
2) тм структура печати
tm_gmtoff: 0
tm_hour: 0
tm_isdst: 0
tm_mday: 10
tm_min: 0
tm_mon: 8
tm_sec: 0
tm_wday: 0
tm_yday: 0
tm_year: 101
Существуют ли другие (простые и быстрые) способыполучить время в секундах для моего случая?