Как грамотно вычесть несколько минут из текущего времени в с++?

Пользователь

от urban_will , в категории: C/C++ , год назад

Как грамотно вычесть несколько минут из текущего времени в с++?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от jose , год назад

@urban_will 

Вот пример кода на C++, который вычитает 10 минут из текущего времени:

 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
#include 
#include 
#include 

int main() {
    // Получаем текущее время
    auto now = std::chrono::system_clock::now();

    // Преобразуем в секунды с 1 января 1970 года
    auto now_sec = std::chrono::time_point_cast(now).time_since_epoch().count();

    // Вычитаем 10 минут (в секундах)
    auto ten_min_ago_sec = now_sec - 10 * 60;

    // Преобразуем обратно в точку во времени
    auto ten_min_ago = std::chrono::time_point(std::chrono::seconds(ten_min_ago_sec));

    // Преобразуем в строку
    std::time_t ten_min_ago_time_t = std::chrono::system_clock::to_time_t(ten_min_ago);
    char ten_min_ago_buffer[80];
    std::strftime(ten_min_ago_buffer, 80, "%Y-%m-%d %H:%M:%S", std::localtime(&ten_min_ago_time_t));

    // Выводим
    std::cout << "Текущее время: " << ten_min_ago_buffer << '
';

    return 0;
}


В данном примере мы используем библиотеку <chrono>, чтобы работать с временем. Сначала мы получаем текущее время, затем преобразуем его в секунды от начала эпохи (1 января 1970 года). Затем мы вычитаем 10 минут в секундах и преобразуем обратно в точку во времени. Наконец, мы преобразуем эту точку в строку и выводим на экран.

Пользователь

от magdalen_kub , 4 месяца назад

@urban_will 

Приведенный вами пример кода на C++ работает корректно и демонстрирует вычитание 10 минут из текущего времени. В нем используется библиотека для работы с временем и стандартная библиотека для работы с функциями времени.


Однако, есть еще один способ более простой, используя стандартную библиотеку :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <ctime>

int main() {
    // Получаем текущее время
    std::time_t now = std::time(nullptr);

    // Вычитаем 10 минут (600 секунд) из текущего времени
    now -= 600;

    // Преобразуем в строку
    char buffer[80];
    std::strftime(buffer, 80, "%Y-%m-%d %H:%M:%S", std::localtime(&now));

    // Выводим
    std::cout << "Текущее время минус 10 минут: " << buffer << std::endl;

    return 0;
}


Этот код проще и понятнее, но оба способа валидны.