python - 使用Python的开始和结束日期和时间的url格式
问题描述
我正在使用 Pandas 生成指定范围内的日期和时间列表以查询 API。我的目标是按小时查询数周或数月。
time_range = pd.date_range('20180601T07:00:0000', '20180701T07:00:0000', freq='H')
time_range = time_range.strftime("%Y%m%d"+'T%H:00-0000')
生成所需列表格式的时间列表。我遇到困难的地方是 URL 的格式...
startdatetime=20180601T07:00-0000&enddatetime=20180601T08:00-0000
我知道我需要从 Pandas 列表中的值 0 和 1 开始,但我不知道如何循环。我应该考虑像...这样的字典吗?
{date1:[hour1, hour2, etc...], date2:[hour1, hour2, etc...], ...}
并使用 .format where startdatetime={1}&enddatetime={2} ?还是应该更像一个for循环...
for date in date_range:
url = 'http://somename?startdatetime={date}&enddatetime{date2}'
urldate = url.format(date=date)
urldate2 = url.format(date2=date + 1)
任何帮助表示赞赏!
解决方案
如果我清楚地理解,您想以一小时的步长从开始日期/时间 (2018-06-01 07:00) 迭代到结束日期/时间 (2018-07-01 07:00)。并生成一个日期/时间间隔为一小时的 URL。
当您可以使用标准库执行此操作时,我不知道您为什么要使用 Panda,如下所示:
import datetime
start = datetime.datetime(2018, 6, 1, 7)
end = datetime.datetime(2018, 7, 1, 7)
delta = datetime.timedelta(hours=1)
fmt = 'http://somename?startdatetime={date1:%Y%m%d%H:00-0000}&enddatetime{date2:%Y%m%d%H:00-0000}'
while start < end:
date1 = start
date2 = start + delta
url = fmt.format(date1=date1, date2=date2)
print(url)
start = date2
你得到:
http://somename?startdatetime=2018060107:00-0000&enddatetime2018060108:00-0000
http://somename?startdatetime=2018060108:00-0000&enddatetime2018060109:00-0000
http://somename?startdatetime=2018060109:00-0000&enddatetime2018060110:00-0000
http://somename?startdatetime=2018060110:00-0000&enddatetime2018060111:00-0000
...
在循环中,我使用日期实例。我使用格式字符串,如“{date2:%Y%m%d%H:00-0000}”以所需格式格式化日期和时间。
请注意,使用标准库很容易实现date_range()函数:
def date_range(start, end, delta):
while start < end:
yield start
start = start + delta
要获取间隔为一小时的日期列表,您可以执行以下操作:
dates = list(date_range(
datetime.datetime(2018, 6, 1, 7),
datetime.datetime(2018, 7, 1, 7),
datetime.timedelta(hours=1)))
那么,解决方案就变成了:
fmt = 'http://somename?startdatetime={date1:%Y%m%d%H:00-0000}&enddatetime{date2:%Y%m%d%H:00-0000}'
for date1, date2 in zip(dates[:-1], dates[1:]):
url = fmt.format(date1=date1, date2=date2)
print(url)
诀窍是使用zip()函数将日期列表移动一个项目来获取一对日期。
推荐阅读
- java - Groovy - 替换变量值
- multithreading - 如何在 Blazor Webassembly 应用程序的服务器端实现 HTTPListener 之类的东西?
- android - Android - Galaxy TAB S7 Android 11 上出现奇怪的额外权限对话框
- python - 通过模块将 C++ 类暴露给 cython
- typescript - io-ts 解析 Eithers/Validations 数组
- php - 如何在 wordpress 页面中显示树状层次结构
- c++ - 使用对象和动态数组(使用指针创建)或向量时 for 循环不起作用
- spyder - Spyder 找不到 pyserial,即使它已经安装
- sql - 如何将 wp_usermeta 的 meta_value 复制到同一张表,但是 meta_key 不同?
- matlab - 如何在MATLAB中确定两个图的交集?