2014-12-20 66 views
0
from Tkinter import * 
from datetime import datetime 
from datetime import timedelta 
import math 

rate1 = str(35.34) 
amp = 2.40 
pmp = 2.50 



signOnSun1 = raw_input("What time did you sign on Sunday: "); 
signOffSun1 = raw_input("What time did you sign off Sunday: "); 

if (signOnSun1 < 0600): 
    rate1 = rate1 + amp 
elif (signOnSun1 > 1100): 
    rate1 = rate1 + pmp 
elif (signOffSun1 > 1800): 
    rate1 = rate1 + pmp 
else: 
    rate1 = 35.34 

FMT = '%H%M'  
timeWorkedSun1 = ((datetime.strptime(signOffSun1, FMT)) - (datetime.strptime (signOnSun1, FMT))) 

*我想timeWorkedSun1轉換爲浮動,所以我可以用率1繁殖,但它似乎是我一生的禍根。任何想法?*轉換時間輸出到一個浮點型變量(Python)的

+0

浮動的是什麼?小時?秒?每天的部分? – Gagravarr

+0

所以我收到的輸出格式爲00:00:00。這很棒。但例如如果格式說8:00:00我想能夠乘以浮動。例如8:00:00 * 34.45不起作用。所以我基本上是在計算我每天工作的小時數,並將其與我的小時費率相乘。多數民衆贊成在目標 –

回答

1

假設你想要做的是要求用戶輸入兩個hours:minutes的數字,並計算它們之間的小時數+小時數,然後使用datetime和現在一樣, (簡體):

signOn = "09:15" 
signOff = "15:45" 

FMT = "%H:%M" 
timeWorkedSun = datetime.strptime(signOff, FMT) - datetime.strptime(signOn, FMT) 

# timeWorkedSun is now a datetime.timedelta 
fractionHours = timeWorkedSun.total_seconds()/60.0/60 

或者,沒有日期時間的代碼,我們可以這樣做:

signOn = "09:15" 
signOff = "15:45" 

signOnP = [int(n) for n in signOn.split(":")] 
signOffP = [int(n) for n in signOff.split(":")] 

signOnH = signOnP[0] + signOnP[1]/60.0 
signOffH = signOffP[0] + signOffP[1]/60.0 

hours = signOffH - signOnH 

但是,如果有人開始在下午6點第一天,第二天凌晨3點結束了會失敗,所以你可能想重新思考你的邏輯

+0

2大問題:timeWorkedSun.seconds是不可調用的(這是一個屬性!),它不是總秒數 - 嘗試datetime.timedelta(天= 1)。秒...! - )。你需要的是.total_seconds()和我的答案一樣。你說的時間轉移通過午夜是正確的,雖然... –

+0

你我的朋友是一個怪異的天才! –

3

timeWorkedSun1datetime.timedelta的類型。調用它的total_seconds方法將其翻譯成若干秒(然後除以3600以得到小時和分數)。 I.e:

time_mul_by_hourly_rate = (timeWorkedSun1.total_seconds()/3600.0) * rate1