A little help with time calculations

I

iminal

I am trying to make a very simple program and am very new to the whole
programming thing. my program is supposed to ask a user for any time in
the for format XX:XX:XX and then ask for a time corrrection to add or
subtract to this. my only problem is that once the user inputs the time
and the correction its adding it like it was 100 not to 60 any help?
 
D

Diez B. Roggisch

iminal said:
I am trying to make a very simple program and am very new to the whole
programming thing. my program is supposed to ask a user for any time in
the for format XX:XX:XX and then ask for a time corrrection to add or
subtract to this. my only problem is that once the user inputs the time
and the correction its adding it like it was 100 not to 60 any help?

Without code, nobody can help you.

Regards,

Diez
 
S

Steve Holden

iminal said:
I am trying to make a very simple program and am very new to the whole
programming thing. my program is supposed to ask a user for any time in
the for format XX:XX:XX and then ask for a time corrrection to add or
subtract to this. my only problem is that once the user inputs the time
and the correction its adding it like it was 100 not to 60 any help?
If you're new to programming you may not yet have realised that many
problems come down to finding appropriate representations for things.

Since you want to do arithmetic on times, why not store them as seconds?
Then you just need to work out how to convert times to seconds, and
seconds to times - Python's arithmetic will do the rest.

See if you can make anything of these functions (which I haven't tested,
so you're allowed to complain if they don't work ;-):

def timetosecs(s):
hms = s.split(":") # [hh, mm, ss]
secs = 0
for t in hms:
secs = secs * 60 + int(t)
return secs

def secstotime(secs):
hms = []
while secs:
hms.append(str(secs % 60))
secs = secs // 60
return ":".join(hms)

regards
Steve
 
I

iminal

what i have so far is :

# Get values needed to make time calculations
CT = input("input your chronometer time (ex. 07:21:46): ")
CE = input("input your chronometer correction (ex. 00:01:32): ")
CEfastslow = raw_input("is your chronometer correction fast or
slow: ")

#decide either to subtract or add CE from/to CT
if CEfastslow == "fast":
CEfastslow = CT - CE
if CEfastslow == "slow":
CEfastslow = CT + CE

but this just doesnt deal with the numbers in time format its acting
like they are just regualr integers adding them up like regular numbers

i am trying to figure out what u posted and it seems a little
complicated im trying to add it in somehow and figure out exactly what
its doing but still looking for a little easier of a way

thanks so far
 
S

Steve Holden

iminal said:
what i have so far is :

# Get values needed to make time calculations
CT = input("input your chronometer time (ex. 07:21:46): ")
CE = input("input your chronometer correction (ex. 00:01:32): ")
CEfastslow = raw_input("is your chronometer correction fast or
slow: ")

#decide either to subtract or add CE from/to CT
if CEfastslow == "fast":
CEfastslow = CT - CE
if CEfastslow == "slow":
CEfastslow = CT + CE

but this just doesnt deal with the numbers in time format its acting
like they are just regualr integers adding them up like regular numbers
Well, how is the interpreter supposed to know that they are times?
Remember that the Python language doesn't have times as a basic data
type, and input(...) treats what you enter as Python data (unlike
raw_input()).
i am trying to figure out what u posted and it seems a little
complicated im trying to add it in somehow and figure out exactly what
its doing but still looking for a little easier of a way
Well, the code I posted was untested, and I find two things wrong with
it straight away: Firstly, it won't include leading zeros when
converting seconds to a time, and secondly it puts the hours, minutes
and seconds in the wrong order.
thanks so far
The idea, though, is to read strings lime "07:20:44" and convert them
into something that Python *can* do arithmetic on. I defined a function,
timetosecs, that would let you do this.

So your program should look something like:

# Put function definitions here ...
CT = raw_input("input your chronometer time (ex. 07:21:46): ")
CE = raw_input("input your chronometer correction (ex. 00:01:32): ")
CEfastslow = raw_input("is your chronometer correction fast or slow: ")

Tsecs = timetosecs(CT)
Esecs = timetosecs(CE)

#decide either to subtract or add CE from/to CT
if CEfastslow == "fast":
CEfastslow = Tsecs - Esecs
if CEfastslow == "slow":
CEfastslow = Tsecs + Esecs

print "New time:", secstotime(CEfastslow)

Hope this gets you a bit closer to a solution.

regards
Steve
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Similar Threads

I require a little help... 1
Help with Loop 0
Help with code plsss 0
Help for a newbie 13
First time attempt at installing scipy 1
Help With a Script 5
Need help with bisection method 1
Need Help with Project 1

Members online

Forum statistics

Threads
473,764
Messages
2,569,564
Members
45,039
Latest member
CasimiraVa

Latest Threads

Top