簡體   English   中英

使用 datetime 模塊按給定的增量時間打印時間

[英]use of datetime module to print time in step of given delta time

我想了解 python datetime時間模塊。 我想在兩個間隔之間增加 5 分鍾的時間。 這就是我所做的,

import datetime
start_time = datetime.datetime(100,1,1,8,0,0) # 8am
end_time = datetime.datetime(100,1,1,9,00,0) # 9am
delta_time = datetime.timedelta(0,300) # 5min intervals 


new_time = start_time + delta_time 
print(new_time.time())

這給出了08:05:00 我想要的結果如下,

08:05:00
08:10:00
08:15:00

如何以更簡單的方式獲得當時的rest? 如果我使用 for 循環,我會收到錯誤消息。

使用pandas.date_range一種方法:

import pandas as pd

t_series = pd.date_range('08:05:00', '09:00:00', freq='5 min')

如果您只想要時間(如演示),請使用pandas.Series.dt.time

for t in t_series.to_series().dt.time:
    print(t)

Output:

08:05:00
08:10:00
08:15:00
08:20:00
08:25:00
08:30:00
08:35:00
08:40:00
08:45:00
08:50:00
08:55:00
09:00:00

如果您想使用datetime執行此操作,請嘗試while循環,如下所示:

import datetime

start_time = datetime.datetime(100,1,1,8,0,0) # 8am
end_time = datetime.datetime(100,1,1,9,00,0) # 9am
delta_time = datetime.timedelta(0, 300) # 5min intervals

new_time = start_time
while new_time != end_time:
    new_time += delta_time
    print(new_time.time())

這就是你會得到的:

08:05:00
08:10:00
08:15:00
08:20:00
08:25:00
08:30:00
08:35:00
08:40:00
08:45:00
08:50:00
08:55:00
09:00:00

通過使用range function 並將分鍾轉換為秒,反之亦然,這很簡單。
該代碼使用生成器表達式來獲取一系列日期時間對象,而不是列表理解。 如果需要了解它們之間的區別,很容易在Stack Overflow上找到大量相關信息。

from pprint import pprint # https://docs.python.org/3.5/library/pprint.html#pprint.pprint
from datetime import datetime, timedelta
f = '%m/%d/%Y:%H:%M:%S'
beg, fin = [datetime.strptime(d, f) for d in ['10/25/2015:00:00:05', '10/25/2015:23:59:58']]
step = 5 # minutes
ts = (beg + timedelta(minutes=s // 60) for s in range(0, int((fin - beg).total_seconds() + 1), step * 60))
pprint([t.strftime(f) for t in ts])

Output:

['10/25/2015:00:00:05',
 '10/25/2015:00:05:05',
 '10/25/2015:00:10:05',
...
'10/25/2015:23:45:05',
 '10/25/2015:23:50:05',
 '10/25/2015:23:55:05']

演示

這是一種方法:

import datetime
h=8 # The starting hour
end_h=10 #the ending hour
m=0
delta=5 #delta value
while h<end_h:
    if m>55:
        h+=1
        m=0
    new_time=datetime.datetime(100,1,1,h,m,0)
    print(new_time.time())
    m=m+delta

Output:

08:00:00
08:05:00
08:10:00
08:15:00
08:20:00
08:25:00
08:30:00
08:35:00
08:40:00
08:45:00
08:50:00
08:55:00
09:00:00
09:05:00
09:10:00
09:15:00
09:20:00
09:25:00
09:30:00
09:35:00
09:40:00
09:45:00
09:50:00
09:55:00
10:00:00

限制:此技術適用於 end_h=24 的最大值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM