pythonの時間はお金です

5520 ワード

1.投稿
タイトルはPythonTipから時間はお金です
2つの時間stとet(00:00:00<=st<=et<=23:59:59)を与えます.この2つの時間間隔の秒数を与えてください.例えば、st="00:00:00",et="00:00:10"の場合、出力10.
2.説明
文字列スライス操作をそれぞれ取り出す際に分秒部分が減算され、各部分の時間差が得られる.そして各部分の時間差を全て秒数加算出力に変換する.
3.参照コード
h = int(et[:2]) - int(st[:2]) #        
m = int(et[3:5]) - int(st[3:5]) #        
s = int(et[6:]) - int(st[6:]) #       
print(h*3600 + m*60 + s) #    

4.その他の書き方
timeライブラリを使用してfiveyesから
import time
t1 = time.mktime(time.strptime('2016-12-12 ' + st, '%Y-%m-%d %H:%M:%S'))
t2 = time.mktime(time.strptime('2016-12-12 ' + et, '%Y-%m-%d %H:%M:%S'))
print(int(t2-t1))

リストに変換してから計算する方法はxiaolezhu(Python 2表記)から
st_list=st.split(':')
et_list=et.split(':')
hour= int(et_list[0])-int(st_list[0])
minute = int(et_list[1])-int(st_list[1])
second=int(et_list[2])-int(st_list[2])
result = hour*3600+minute*60+second
print result

強力な解読法はJJJWeiから
listst=list(st)
listet=list(et)
sth=int(listst[0])*10+int(listst[1])
stm=int(listst[3])*10+int(listst[4])
sts=int(listst[6])*10+int(listst[7])
eth=int(listet[0])*10+int(listet[1])
etm=int(listet[3])*10+int(listet[4])
ets=int(listet[6])*10+int(listet[7])
print (eth-sth)*3600+(etm-stm)*60+(ets-sts)

DatetimeライブラリはYSMJから
import datetime
t1 = datetime.datetime.strptime(st, '%H:%M:%S')
t2 = datetime.datetime.strptime(et, '%H:%M:%S')
print (t2-t1).seconds

reduceはzyuu 2(Python 2表記)から
def g(x,y):
    return x * 60 + y

lst = [int(x) for x in st.split(':')]
let = [int(y) for y in et.split(':')]

sts = reduce(g, lst)
ets = reduce(g, let)

print ets - sts