Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Human Time to Unix Timestamp - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Error LNK1120: неразрешенных внешних элементов: 2 http://www.cyberforum.ru/cpp-beginners/thread1540353.html
Доброго времени суток. Не могу понять в чем ошибка. Подскажите, пожалуйста. Задание: Программно реализовать следующие методы сортировки данных в оперативной памяти: сортировка прямыми включения-ми;...
C++ Односвязный список с данными о студентах Составить односвязный список на основе класса,объекты которого будут формтировать этот списо. В описание класса должны входить данные для хранения фамилии студента,номера группы,оценок по трём... http://www.cyberforum.ru/cpp-beginners/thread1540321.html
C++ Функции для ввода/вывода массивов и матриц с помощью шаблонов и перегрузки
#include <iostream> #include <conio.h> using namespace std; template<class T> int mass(T mas, T iSize = sizeof(mas) / sizeof(int)); int mass(mas, iSize = sizeof(mas) / sizeof(int)); ...
C++ Класс "Окружность", три объекта изображающих движение
разработав класс окружность, создать три объекта изображающих движение: а)расширяющейся (сужающейся) окружности с неподвижным центром б)окружность постоянного радиуса, скользящий вдоль прямой...
C++ Rand() генерирует одни и те же числа http://www.cyberforum.ru/cpp-beginners/thread1540278.html
0100010010101010100011111101010101000010 щучу :p Всем привет, не найдя на форуме ответа, решил сделать тему, удалю как получу ответ ]:-> Есть rand() для генерации случайного числа. Но проблема...
C++ Внутреннее устройство потоков Очень тупой вопрос - почему std::ios хранит в своих потрохах указатель на объект std::streambuf, а не является потомком std::streambuf? Принимая во внимание что std::streambuf все равно собран на... подробнее

Показать сообщение отдельно
DrOffset
7348 / 4448 / 1009
Регистрация: 30.01.2014
Сообщений: 7,291
29.09.2015, 16:13
Цитата Сообщение от pav1uxa Посмотреть сообщение
Как?
Использовать localtime вместо gmtime и сравнивать с значением локального времени.
Например, для моего часового пояса, 25.09.15 08:40:00 - это 1443156000.
Т.е. как-то так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
std::string dateStr2str(std::string input)
{
    std::string result = "";
    int day, month, year, hour, minute, second;
 
    sscanf(input.c_str(), "%d.%d.%d %d:%d:%d", &day, &month, &year, &hour, &minute, &second);
 
    std::tm dt;
    dt.tm_mday = day;
    dt.tm_mon  = month - 1;
    dt.tm_year = year + 2000 - 1900;
    dt.tm_hour = hour;
    dt.tm_min  = minute;
    dt.tm_sec  = second;
 
    std::time_t t = mktime(&dt); // Это "локальное время"
 
    std::tm dt1 = *std::localtime(&t); // это локальное время в tm
    std::tm dt2 = *std::gmtime(&t);    // это UTC в tm
 
    std::time_t loct = mktime(&dt1);
 
    // Текущий часовой пояс
    std::cout << t << " " << (t - loct) / 60 / 60 << std::endl;
 
    // это уже смещенное время в UTC
    t = mktime(&dt2);
    std::cout << t << " " << (t - loct) / 60 / 60 << std::endl;
 
    result = std::to_string(t);
    return result;
}
Цитата Сообщение от pav1uxa Посмотреть сообщение
У меня OS Windows 7: error: 'timegm' was not declared in this scope
Правильно, потому что ОС надо сразу указывать в вопросе
А если серьезно, то функция POSIX, естественно ее нет в вин. В вин, наверняка что-то из win api придется дергать.

Добавлено через 10 минут
pav1uxa, можно еще вычислить разницу (заранее один раз) и корректировать затем время самостоятельно.
C++
1
2
    std::time_t cur  = std::time(nullptr);
    std::time_t diff = std::difftime(std::mktime(std::gmtime(&cur)), cur);
Добавлено через 48 секунд
Кстати, ты ведь знаешь, что функции типа localtime, gmtime не потокобезопасны?

Добавлено через 3 минуты
Вот, кстати, рабочий пример с timegm в *nix окружении.
http://rextester.com/ZXJZS49318
Чтобы тебе не думалось, что я тебя обманывал
2
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru