Модуль time
Функции для работы с временем
Модуль time
в MicroPython предоставляет функции для получения текущего времени и даты, измерения временных интервалов и выполнения задержек.
Модуль time
использует начальную эпоху для отсчета времени в Unix-портах как стандартную эпоху для
POSIX-систем, начинающуюся с 1970-01-01 00:00:00 UTC.
Функции
gmtime
localtime
Функции gmtime([secs])
и localtime([secs])
преобразуют время secs, выраженное в секундах с момента эпохи, в восьмиэлементный кортеж, который содержит: (год, месяц, день_месяца, час, минута, секунда, день_недели, день_года)
. Если secs не указано или равно None
, используется текущее время из RTC.
Функция gmtime()
возвращает кортеж даты и времени в UTC, а localtime()
— в локальном времени.
Формат элементов в кортеже:
- год включает столетие (например, 2014);
- месяц в диапазоне 1-12;
- день_месяца в диапазоне 1-31;
- час в диапазоне 0-23;
- минута в диапазоне 0-59;
- секунда в диапазоне 0-59;
- день_недели в диапазоне 0-6 для Понедельник-Воскресенье;
- день_года в диапазоне 1-366.
import time
# Получаем текущее время в формате UTC
current_time_utc = time.gmtime()
print("UTC Time:", current_time_utc)
# Получаем текущее локальное время
current_time_local = time.localtime()
print("Local Time:", current_time_local)
mktime
Функция mktime()
обратная к localtime
. Аргументом является полный восьмиэлементный кортеж, который выражает время, как и в localtime
. Функция возвращает целое число, представляющее количество секунд с 1 января 2000 года.
import time
# Преобразуем кортеж времени в количество секунд с 1 января 2000 года
time_tuple = (2024, 5, 13, 12, 45, 30, 0, 0)
seconds_since_epoch = time.mktime(time_tuple)
print("Seconds since 2000-01-01:", seconds_since_epoch)
sleep
Функция sleep(seconds)
приостанавливает выполнение на заданное число секунд. Некоторые платы могут принимать seconds как число с плавающей точкой для паузы на дробное количество секунд. Если необходимо обеспечить совместимость, используйте функции sleep_ms()
и sleep_us()
.
import time
# Пауза на 2 секунды
time.sleep(2)
sleep_ms
Функция sleep_ms(ms)
выполняет задержку на заданное количество миллисекунд, значение должно быть положительным или равно 0.
import time
# Задержка на 500 миллисекунд
time.sleep_ms(500)
sleep_us
Функция sleep_us(us)
выполняет задержку на заданное количество микросекунд, значение должно быть положительным или равно 0.
import time
# Задержка на 100 микросекунд
time.sleep_us(100)
ticks_ms
Функция ticks_ms()
возвращает возрастающий счетчик миллисекунд с произвольной исходной точкой, который обнуляется после достижения некоторого значения.
import time
start_ticks = time.ticks_ms()
time.sleep_ms(100) # задержка на 100 миллисекунд
end_ticks = time.ticks_ms()
print("Passed milliseconds:", time.ticks_diff(end_ticks, start_ticks))
ticks_us
Функция ticks_us()
аналогична ticks_ms()
, но в микросекундах.
ticks_cpu
Функция ticks_cpu()
похожа на ticks_ms()
и ticks_us()
, но с максимально возможным разрешением в системе. Обычно это отсчет тактов процессора.
ticks_add
Функция ticks_add(ticks, delta)
сдвигает значение тиков на заданное количество (delta), которое может быть положительным или отрицательным.
import time
# Определение тиков 100ms назад
past_ticks = time.ticks_add(time.ticks_ms(), -100)
print("100 milliseconds ago:", past_ticks)
ticks_diff
Функция ticks_diff(ticks1, ticks2)
измеряет разницу в тиках между значениями, возвращенными из ticks_ms()
, ticks_us()
, или ticks_cpu()
, как знаковое значение, которое может обнуляться.
import time
start = time.ticks_ms()
time.sleep_ms(500) # Задержка 500 миллисекунд
end = time.ticks_ms()
print("Difference in ms:", time.ticks_diff(end, start))
time
Функция time()
возвращает количество секунд, как целое число, с момента эпохи, при условии, что RTC установлен и поддерживается, как описано выше.
time_ns
Функция time_ns()
похожа на time()
, но возвращает время в наносекундах с момента эпохи в формате целого числа.
Отличие от CPython: В CPython, эта функция возвращает количество секунд с эпохи Unix, 1970-01-01 00:00 UTC, как число с плавающей точкой, обычно с микросекундной точностью. В MicroPython, только Unix-порт использует ту же эпоху.