Как получить текущее время в программировании: примеры на C и Python
Чтобы получить текущее время в программировании на C и Python, используйте стандартные библиотеки: datetime и <time.h>. Это закрывает базовую задачу логирования и работы с временными метками.
Оглавление
Получение времени в Python
Для получения локального времени используется метод datetime.datetime.now() из стандартной библиотеки datetime.
Устаревание в Python 3.12+
Метод datetime.datetime.utcnow() признан устаревшим (deprecated) начиная с версии 3.12. Вместо него для UTC-времени нужно использовать datetime.datetime.now(datetime.UTC).
Для вывода времени в формате «ГГГГ-ММ-ДД ЧЧ:ММ:СС» используйте:
now.strftime("%Y-%m-%d %H:%M:%S")
Наивное и осознанное время
Функция datetime.now() возвращает «наивное» время (naive datetime) без привязки к часовому поясу. Если вам нужно время с учетом часового пояса (aware datetime), используйте datetime.datetime.now(datetime.timezone.utc) или подключайте библиотеку zoneinfo (стандартная с Python 3.9).
Получение времени в языке C
Для получения текущего времени используется функция time(NULL) из стандартной библиотеки <time.h>, которая возвращает значение типа time_t.
Для преобразования time_t в читаемый формат (структуру struct tm) используется функция localtime(), а для форматирования в строку — strftime().
Пример форматирования в «ГГГГ-ММ-ДД ЧЧ:ММ:СС»:
char buf[64];
strftime(buf, sizeof(buf), "%Y-%m-%d %H:%M:%S", tm);
Потокобезопасность в C
Функция localtime() не является потокобезопасной (thread-safe). Если вы пишете многопоточное приложение на C, используйте POSIX-функцию localtime_r() или стандартную C11 localtime_s().
Компиляция и запуск кода на C
Для компиляции и запуска кода в терминале используйте следующие команды:
- Linux/macOS:
gcc filename.c -o filename && ./filename - Windows (при наличии MinGW/GCC):
gcc filename.c -o filename.exe && filename.exe
Частые ошибки
- Использование
utcnow()в новых версиях Python. В Python 3.12 и новее этот метод устарел, что может привести к предупреждениям или ошибкам в строгом режиме. - Игнорирование потокобезопасности в C. Применение
localtime()в многопоточных программах без использованияlocaltime_r()илиlocaltime_s()может вызвать гонки данных. - Путаница с часовыми поясами в Python. Использование «наивного» времени (
naive datetime) там, где требуется точная привязка к поясу, приводит к ошибкам логики при сохранении или сравнении меток.
FAQ
Влияет ли регион или операционная система на работу кода? Нет. Стандартные библиотеки языков C и Python работают одинаково во всех операционных системах и регионах. Время берется напрямую из настроек самой ОС.
Как вывести время строго в формате «ГГГГ-ММ-ДД ЧЧ:ММ:СС»?
Используйте спецификатор "%Y-%m-%d %H:%M:%S" в функции strftime как для C, так и для Python.