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

如何将Streamlit时间输入结合指定日期转换为Unix纪元毫秒数

将Streamlit的st.time_input输入转换为Unix纪元毫秒数

实现步骤

  • 把YYYYMMDD格式的日期字符串解析为date对象
  • 将st.time_input返回的time对象与日期合并为完整的datetime对象
  • 将datetime对象转为Unix时间戳(秒级),再乘以1000得到毫秒数
  • 若需基于UTC时间计算,需额外处理时区转换

完整代码示例

import streamlit as st
from datetime import datetime, date, timedelta

# 给定日期字符串
day = '20240325'  # YYYYMMDD格式
# 修正step参数:支持传入秒数或timedelta对象,这里设置1分钟步长
time = st.time_input('Execution time', step=60)  # 或 step=timedelta(minutes=1)

# 解析日期字符串为date对象
parsed_date = date(int(day[:4]), int(day[4:6]), int(day[6:8]))
# 合并日期与时间为datetime对象
full_datetime = datetime.combine(parsed_date, time)

# 转换为Unix纪元以来的毫秒数
time_in_ms_since_epoch = int(full_datetime.timestamp() * 1000)
print(time_in_ms_since_epoch)

关键说明

  • st.time_input返回的是datetime.time类型,无法直接生成时间戳,必须和日期组合成datetime对象
  • timestamp()方法默认返回本地时间对应的Unix秒级时间戳,若需UTC时间戳,可做如下转换:
    full_datetime_utc = full_datetime.astimezone(datetime.timezone.utc)
    time_in_ms_since_epoch_utc = int(full_datetime_utc.timestamp() * 1000)
    
  • 原代码中的step=0:1:00是错误写法,Streamlit要求step参数为整数(秒数)或datetime.timedelta对象

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 08:48:11