You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在MicroPython中解析ISO 8601日期时间以获取星期几?

解决MicroPython(Raspberry Pi Pico)解析ISO 8601日期并格式化的问题

因为MicroPython的time模块无法直接解析ISO 8601格式的日期字符串,我们可以通过手动拆分字符串+时间元组转换的方式实现需求,具体步骤和代码如下:

实现思路

  1. 拆分ISO日期字符串,提取年、月、日的数值
  2. 构造time模块可识别的时间元组,转换为时间戳
  3. 通过time.localtime()获取包含星期信息的时间元组
  4. 将星期数字映射为对应的英文名称,再与日期拼接成目标格式

代码示例

import time

def iso_to_weekday_day(date_str):
    # 拆分ISO字符串,提取日期部分(去掉时间和T分隔符)
    date_part = date_str.split('T')[0]
    # 将日期字符串转为整数类型的年、月、日
    year, month, day = map(int, date_part.split('-'))
    
    # 构造time.mktime所需的时间元组:(年, 月, 日, 时, 分, 秒, 星期占位, 年内天数占位, 夏令时标记)
    # 后面的占位填0,夏令时标记填-1让系统自动判断
    time_tuple = (year, month, day, 0, 0, 0, 0, 0, -1)
    # 转换为时间戳
    timestamp = time.mktime(time_tuple)
    
    # 获取包含星期信息的本地时间元组
    local_time = time.localtime(timestamp)
    
    # 映射星期数字到英文名称(tm_wday:0=周一,6=周日)
    weekdays = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"]
    weekday_name = weekdays[local_time[6]]
    
    # 返回目标格式字符串
    return f"{weekday_name} {local_time[2]}"

# 测试用例
sample_date = "2023-10-18T00:00:00"
print(iso_to_weekday_day(sample_date))  # 输出: Wednesday 18

注意事项

  • 如果你的ISO日期字符串包含时区信息(如2023-10-18T00:00:00+08:00),需要先做时区偏移处理,再转换为本地时间戳,否则结果会有偏差。
  • 确保Raspberry Pi Pico的系统时间已正确设置,否则转换出的星期信息可能不准确。

内容的提问来源于stack exchange,提问作者John Horner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 03:17:11