#cpp #время
Уважаемые коллеги! Производственная необходимость просит написать текущее время за минусом 10 минут и у меня не очень-то получается. Напомню, что получают время примерно так: #include "stdafx.h" #include#include #include #include // size_t #include // strlen, strcpy using namespace std; int main() { setlocale(LC_ALL, "Russian"); SYSTEMTIME st, lt; GetSystemTime(&st); GetLocalTime(<); double dm = st.wMinute - 5; //за минусом 5 минут double dm1 = lt.wMinute - 5; //за минусом 5 минут //Просто вывод времени printf("The system time is: %02d:%02d\n", st.wHour, st.wMinute); printf(" The local time is: %02d:%02d\n", lt.wHour, lt.wMinute); //Новое время для моего проекта. printf("The system time is: %02d:%02d\n", st.wHour, dm); printf(" The local time is: %02d:%02d\n", lt.wHour, dm1); system("PAUSE"); return 0; } Output: The system time is: 09:24 The local time is: 12:24 The NEW system time is: 09:00 The NEW local time is: 12:00 Вполне очевидно что третья и четвёртая строка нас не могут удовлетворить. Как грамотно исправить это безобразие?
Ответы
Ответ 1
Чувствую, что намеки в комментариях не помогают... Начните со строк double dm = st.wMinute - 5; //за минусом 5 минут double dm1 = lt.wMinute - 5; //за минусом 5 минут Замените их строками int dm = st.wMinute - 5; //за минусом 5 минут int dm1 = lt.wMinute - 5; //за минусом 5 минут Дальше будут другие проблемы - когда эта разность окажется отрицательной... но это уже немного другой вопрос.Ответ 2
Вы не указали ОС, для которой пишете задачу. Судя по вызовам - Windows? В Linux всё очень просто: #include#include int main(int argc, char *argv[]) { time_t t_wrk, t_10; struct tm *ptm; t_wrk = time(NULL); // Текущее время в СЕКУНДАХ t_10 = t_wrk - 600; // 10 минут назад // Печатаем результат ptm = localtime(&t_wrk); printf("Было: %d минут\n", ptm->tm_min); ptm = localtime(&t_10); printf("Стало: %d минут\n", ptm->tm_min); } Подозреваю, что и в виндовозе эти базовые функции работы со временем давным-давно реализованы. Проверил на переход границы часа. Границу суток проверят не стал - слишком уж всё очевидно!
Комментариев нет:
Отправить комментарий