Модуль 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-порт использует ту же эпоху.