[英]Modular and time difference between two dates
我試圖將(day,hour,minut,seconds)
轉換為2個日期的秒,產生差異,然后反轉。 我所做的基本上有效但在某些情況下會返回錯誤的結果。
輸入數據表格進行測試:
13
6 0 8 22 20 18 10 28
2 5 32 20 7 1 21 51
11 5 54 35 15 15 11 24
6 2 3 49 16 10 49 9
1 1 37 59 14 22 13 0
3 15 15 10 28 18 37 21
21 9 54 11 22 1 11 13
12 3 37 24 20 12 42 50
16 11 25 12 26 1 37 19
7 4 59 31 12 8 54 23
3 10 22 49 24 19 36 32
1 1 21 2 29 10 51 13
5 22 2 37 29 1 53 59
它總是在小時結果中返回一個錯誤的值(它增加了36)
編碼:
count=lambda a,b,c,d:a+b+c+d
def magic_date_to_numbers(a,b,c,d):
a*=60**3
b*=60**2
c*=60
return count(a,b,c,d)
def reverse_magic(n):
a=n/(60**3)
b=(n%(60**3))/(60**2)
c=(((n%60**3)%60**2))/60
d=((n%(60**3))%(60**2))%60
print "(%s %s %s %s) "%(str(a),str(b),str(c),str(d))
for i in range(0,int(raw_input())):
d=map(long,raw_input().split(" "))
n1=magic_date_to_numbers(d[0],d[1],d[2],d[3])
n2=magic_date_to_numbers(d[4],d[5],d[6],d[7])
reverse_magic(abs(n2-n1))
謝謝 :)
已經有很好的內置函數和實用程序來處理這些類型的問題,但我認為你犯的錯誤非常簡單:一天24小時,而不是60(60 - 24 = 36)。
from datetime import timedelta
def magic_date_to_numbers(days, hours, minutes, seconds):
t = timedelta(days=days, hours=hours, minutes=minutes, seconds=seconds)
return t.total_seconds()
# hours += days * 24 # 24 hours in a day
# minutes += hours * 60 # 60 minutes in an hour
# seconds += minutes * 60 # 60 seconds in a minute
# return seconds
def reverse_magic(n):
t = timedelta(seconds=n)
n = t.seconds
seconds, minutes = n % 60, n // 60
minutes, hours = minutes % 60, minutes // 60
# hours, days = hours % 24, hours // 24
print "(%s %s %s %s) " % (t.days, hours, minutes, seconds)
for i in range(0,int(raw_input())):
d=map(long,raw_input().split(" "))
n1=magic_date_to_numbers(d[0],d[1],d[2],d[3])
n2=magic_date_to_numbers(d[4],d[5],d[6],d[7])
reverse_magic(abs(n2-n1))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.