2014-12-20 36 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