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

如何用Python生成按月逐小时的指定格式时间序列数组?

嘿,这个需求用Python的标准库就能轻松实现,循环的思路也很直观。我给你一步步拆解,再附上可运行的代码:

实现思路

核心就是利用datetime模块来处理时间的增减和格式化,循环逻辑非常简单:从起始时间开始,每一步加1小时,直到达到结束时间为止,每一步都把时间转成你要的格式存入数组。

完整代码示例
from datetime import datetime, timedelta

# 1. 定义起始和结束时间(这里用你给出的示例范围)
# 用strptime把字符串转成datetime对象,注意格式符要和输入字符串对应
start_time = datetime.strptime('2013/05/23;01:00:00:000', '%Y/%m/%d;%H:%M:%S:%f')
end_time = datetime.strptime('2013/06/23;01:00:00:000', '%Y/%m/%d;%H:%M:%S:%f')

# 2. 初始化存储时间序列的数组
time_series = []
current_time = start_time

# 3. 循环生成逐小时时间点
while current_time <= end_time:
    # 把datetime对象格式化成你要的字符串格式
    # %f会输出6位毫秒,我们只需要前3位,所以用[:-3]切掉最后三位
    formatted_time = current_time.strftime('%Y/%m/%d;%H:%M:%S:%f')[:-3]
    time_series.append(formatted_time)
    # 每次给当前时间加1小时
    current_time += timedelta(hours=1)

# 可选:验证结果,打印前5个和后5个时间点
print("前5个时间点:")
for t in time_series[:5]:
    print(t)

print("\n后5个时间点:")
for t in time_series[-5:]:
    print(t)
关键细节说明
  • 时间格式化:strftime里的%f对应6位毫秒,而你需要的是3位,所以用切片[:-3]去掉最后三位,刚好得到000这样的格式。
  • 动态计算结束时间:如果不想手动写结束时间,想自动生成“起始时间往后一个月”的时间,可以用python-dateutil库的relativedelta(需要先pip install python-dateutil),替换结束时间的定义:
    from dateutil.relativedelta import relativedelta
    end_time = start_time + relativedelta(months=1)
    
    这样不管起始月份是28天、30天还是31天,都能准确得到下一个月的同一时间点,不用手动算天数。
  • 循环终止条件:用current_time <= end_time确保结束时间也会被包含在数组里,完全符合你示例里的范围要求。

运行这段代码后,time_series数组里就会存满所有逐小时的时间字符串,完美匹配你的需求~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:20:15