python 时间增量 - 包括迄今为止的小时数
python time delta - inclusion of hour to date
我在 S3 存储桶中有文件。数据文件以标准标签末尾的日期命名。
例如,文件密钥如下所示:
test_file_2016-12-01.tar.gz
我想下载从日期 x
到日期 y
的文件。我可以这样做:
conn = boto.connect_s3(host="s3-eu-west-1.amazonaws.com")
bucket = conn.get_bucket(bucket_name)
k = Key(bucket)
key_prefix = "test_file"
date_o = date(2016,11,30)
date_1 = date(2016,12,01)
day_delta = date_1 - date_o
for i in range(day_delta.days +1):
file_key = key_prefix + str(date_o + td(days=i)) + "tar.gz"
# Get the file
k.key = file_key
# Location for download destination
temp_location = "./tmp/" + file_key
k.get_contents_to_filename(temp_location)
但是,我现在正在收集更精细分辨率的数据,并希望添加具有小时分辨率的数据。
因此文件看起来像这样:
test_file_2016-12-01-10.tar.gz
我可以使用 datetime
的 timedelta
功能很好地处理时间增量,但这也不支持 hour
。
我如何调整它以指定在以下时间之间捕获文件:
date_o = datetime(2016,11,30,01,0,0)
date_1 = datetime(2016,12,01,12,0,0)
在内部,datetime
模块会将timedelta
小时转换为秒,这意味着我们必须先以秒为单位完成计算,然后再除以3600得到我们想要的小时范围.之后,我们只需要在迭代时提供 strftime
我们想要的格式即可显示各个小时。
import datetime as dt
date_o = dt.datetime(2016, 11, 30, 0)
date_1 = dt.datetime(2016, 12, 1, 0)
delta_hours = (date_1 - date_o + dt.timedelta(hours=1)).total_seconds() / 3600
for hour in range(int(delta_hours)):
current_time = date_o + dt.timedelta(hours=hour)
file_name = 'test_file_' + dt.datetime.strftime(current_time,
'%Y-%m-%d-%H') + '.tar.gz'
print(file_name)
我在 S3 存储桶中有文件。数据文件以标准标签末尾的日期命名。
例如,文件密钥如下所示:
test_file_2016-12-01.tar.gz
我想下载从日期 x
到日期 y
的文件。我可以这样做:
conn = boto.connect_s3(host="s3-eu-west-1.amazonaws.com")
bucket = conn.get_bucket(bucket_name)
k = Key(bucket)
key_prefix = "test_file"
date_o = date(2016,11,30)
date_1 = date(2016,12,01)
day_delta = date_1 - date_o
for i in range(day_delta.days +1):
file_key = key_prefix + str(date_o + td(days=i)) + "tar.gz"
# Get the file
k.key = file_key
# Location for download destination
temp_location = "./tmp/" + file_key
k.get_contents_to_filename(temp_location)
但是,我现在正在收集更精细分辨率的数据,并希望添加具有小时分辨率的数据。
因此文件看起来像这样:
test_file_2016-12-01-10.tar.gz
我可以使用 datetime
的 timedelta
功能很好地处理时间增量,但这也不支持 hour
。
我如何调整它以指定在以下时间之间捕获文件:
date_o = datetime(2016,11,30,01,0,0)
date_1 = datetime(2016,12,01,12,0,0)
在内部,datetime
模块会将timedelta
小时转换为秒,这意味着我们必须先以秒为单位完成计算,然后再除以3600得到我们想要的小时范围.之后,我们只需要在迭代时提供 strftime
我们想要的格式即可显示各个小时。
import datetime as dt
date_o = dt.datetime(2016, 11, 30, 0)
date_1 = dt.datetime(2016, 12, 1, 0)
delta_hours = (date_1 - date_o + dt.timedelta(hours=1)).total_seconds() / 3600
for hour in range(int(delta_hours)):
current_time = date_o + dt.timedelta(hours=hour)
file_name = 'test_file_' + dt.datetime.strftime(current_time,
'%Y-%m-%d-%H') + '.tar.gz'
print(file_name)