在 MicroPython 中解析 ISO 日期时间

问题描述 投票:0回答:1

MicroPython 中没有办法解析 ISO 日期时间对象吗?我的 Raspberry Pi Pico 调用包含 ISO 8601 格式的日期项目的 REST API:

{"title":"Green","date":"2023-10-18T00:00:00"}

但是 MicroPython 似乎只有一个 time 函数,而不是 datetime 函数,并且 time 函数似乎无法解析字符串。

例如,我基本上需要将 ISO 字符串转换为“Wednesday 18”。

python datetime parsing micropython iso8601
1个回答
0
投票

有一种算法可以确定给定日期是星期几,适用于 1753 年以来的日期。

sample = {"title":"Green","date":"2023-10-18T00:00:00"}

def day_string_from_iso8601_date(date_str):
    month_keys = (1,4,4,0,2,5,0,3,6,1,4,6)
    days_of_week = ("Saturday", "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday")
    [yyyy, mm, dd] = [int(i) for i in date_str.split('T')[0].split('-')]
    leap_year_modifier = 0
    if ((yyyy % 400 == 0) or (yyyy % 100 != 0) and (yyyy % 4 == 0)) and mm in (1, 2):
        leap_year_modifier = -1
    a = yyyy % 100
    b = a // 4
    year_modifier = 0
    if yyyy < 1800:
        year_modifier = 4
    elif 1799 < yyyy < 1900:
        year_modifier = 2
    elif 1999 < yyyy < 2100:
        year_modifier = -1
    day = (a + b + dd + month_keys[mm-1] + leap_year_modifier + year_modifier) % 7
    return f"{days_of_week[day]} {dd}"


day_string_from_iso8601_date(sample["date"])

输出:

'Wednesday 18'
© www.soinside.com 2019 - 2024. All rights reserved.