Я экспериментирую со странным поведением функции mktime(). Когда я присваиваю значение, возвращаемое функцией, значение входного параметра равно одному, а если нет, то значение другое.
Я уже знаю, что mktime() корректирует значения входного параметра struct tm, но происходит другое, давайте посмотрим код с соответствующим выводом:
Первый код
#include <iostream>
#include <time.h>
using namespace std;
int main(int argc, char** argv) {
struct tm cT;
strptime("31/07/2014 16:54:00", "%d/%m/%Y%n%T", &cT);
mktime(&cT);
cout << "Current Time: " << cT.tm_mday << "/" << cT.tm_mon + 1 << "/" << cT.tm_year + 1900 << " " << cT.tm_hour << ":" << cT.tm_min << ":" << cT.tm_sec << endl;
}
Вывод:
Текущее время: 31/7/2014 16:54:0
Второй код
#include <iostream>
#include <time.h>
using namespace std;
int main(int argc, char** argv) {
struct tm cT;
strptime("31/07/2014 16:54:00", "%d/%m/%Y%n%T", &cT);
time_t t = mktime(&cT);
cout << "Current Time: " << cT.tm_mday << "/" << cT.tm_mon + 1 << "/" << cT.tm_year + 1900 << " " << cT.tm_hour << ":" << cT.tm_min << ":" << cT.tm_sec << endl;
}
Вывод:
Текущее время: 31/7/2014 15:54:0
Любая помощь приветствуется. :)
time.h
устарел. Используйтеctime
. Илиchrono
. - person chris   schedule 01.08.2014