Python 生成日期序列

37 投票
3 回答
61473 浏览
提问于 2025-04-16 08:43

我想生成一个这样的日期数组:

在JavaScript中,以毫秒为单位的时间戳,从2010年12月1日00:00:00到2010年12月12日23:59:59,时间间隔是5分钟。

['2010.12.01 00:00:00', '2010.12.01 00:05:00','2010.12.01 00:10:00','2010.12.01 00:15:00', ...]

3 个回答

1

这是我为Python3写的一个变体,但其实很简单,可以转换成Python2.6的代码:

import datetime as dt

dt1 = dt.datetime(2010, 12, 1)
dt2 = dt.datetime(2010, 12, 12, 23, 59, 59)

time_step = 5 # secoonds
delta = dt2 - dt1

delta_sec = delta.days * 24 * 60 * 60 + delta.seconds

res = [dt1 + dt.timedelta(0, t) for t in range(0, delta_sec, time_step)]
74

我觉得有必要提一下,pandas 也有这个功能。根据你具体遇到的情况,花时间学习 pandas 可能是个不错的选择。

import pandas as pd 
times = pd.date_range('2012-10-01', periods=289, freq='5min')

这个会返回一个 pandas 的时间序列索引。这个索引可以转换成 numpy 数组。

np.array(times)
67

好吧,显然你是从开始时间开始,然后循环直到到达结束时间,中间每次增加一点。

import datetime

dt = datetime.datetime(2010, 12, 1)
end = datetime.datetime(2010, 12, 30, 23, 59, 59)
step = datetime.timedelta(seconds=5)

result = []

while dt < end:
    result.append(dt.strftime('%Y-%m-%d %H:%M:%S'))
    dt += step

这其实很简单。

撰写回答