close
Пространства имён
Варианты
Действия

std::mktime

Материал из cppreference.com
< cpp | chrono | c
 
 
Библиотека утилит
Языковая поддержка
Поддержка типов (базовые типы, RTTI)
Макросы тестирования функциональности библиотеки (C++20)    
Управление динамической памятью
Программные утилиты
Поддержка сопрограмм (C++20)
Вариативные функции
Трёхстороннее сравнение (C++20)
(C++20)
(C++20)(C++20)(C++20)(C++20)(C++20)(C++20)
Общие утилиты
Дата и время
Функциональные объекты
Библиотека форматирования (C++20)
(C++11)
Операторы отношения (устарело в C++20)
Целочисленные функции сравнения
(C++20)(C++20)(C++20)    
(C++20)
Операции обмена и типа
(C++14)
(C++11)
(C++11)
(C++11)
(C++17)
Общие лексические типы
(C++11)
(C++17)
(C++17)
(C++17)
(C++11)
(C++17)
(C++23)
Элементарные преобразования строк
(C++17)
(C++17)
 
 
Утилиты даты и времени в стиле C
Функции
Манипуляции временем
Преобразование форматов
Константы
Типы
(C++17)
 
<tbody> </tbody>
Определено в заголовочном файле <ctime>
std::time_t mktime( std::tm* time );

Преобразует время по местному календарю во время, начиная с начала эпохи, как объект std::time_t. time->tm_wday и time->tm_yday игнорируются. Значения в time могут быть за пределами своих нормальных диапазонов.

Отрицательное значение time->tm_isdst заставляет mktime попытаться определить, действовало ли летнее время.

Если преобразование прошло успешно, объект time изменяется. Все поля time обновляются, чтобы соответствовать их правильным диапазонам. time->tm_wday и time->tm_yday пересчитываются с использованием информации, доступной в других полях.

Параметры

time указатель на объект std::tm, указывающий местное календарное время для преобразования

Возвращаемое значение

Время с начала эпохи в виде объекта std::time_t в случае успеха или -1, если time не может быть представлено в виде объекта std::time_t.

Примечание

Если объект std::tm был получен из std::get_time или POSIX функции strptime, значение tm_isdst неопределенно и должно быть задано явно перед вызовом mktime.

Пример

Явно создаём местное время.

#include <iostream>
#include <sstream>
#include <iomanip>
#include <ctime>
 
int main()
{
    setenv("TZ", "/usr/share/zoneinfo/America/Los_Angeles", 1); // специфично для POSIX
 
    std::tm tm{};  // Инициализация нулём
    tm.tm_year = 2020-1900; // 2020
    tm.tm_mon = 2-1; // Февраль
    tm.tm_mday = 15; // 15-е
    tm.tm_hour = 10;
    tm.tm_min = 15;
    tm.tm_isdst = 0; // Нет перехода на летнее время
    std::time_t t = std::mktime(&tm); 
    std::tm local = *std::localtime(&t);
 
    std::cout << "локальное: " << std::put_time(&local, "%c %Z") << '\n';
}

Возможный вывод:

локальное: Sat Feb 15 10:15:00 2020 PST

Смотрите также

преобразует время с начала эпохи в календарное время, выраженное как местное время
(функция) [править]