By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
455,539 Members | 1,289 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 455,539 IT Pros & Developers. It's quick & easy.

A little help with time calculations

P: n/a
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?

Oct 18 '05 #1
Share this Question
Share on Google+
5 Replies


P: n/a
iminal wrote:
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
Oct 18 '05 #2

P: n/a
iminal wrote:
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
--
Steve Holden +44 150 684 7255 +1 800 494 3119
Holden Web LLC www.holdenweb.com
PyCon TX 2006 www.python.org/pycon/

Oct 18 '05 #3

P: n/a
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

Oct 18 '05 #4

P: n/a
iminal wrote:
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
--
Steve Holden +44 150 684 7255 +1 800 494 3119
Holden Web LLC www.holdenweb.com
PyCon TX 2006 www.python.org/pycon/

Oct 19 '05 #5

P: n/a
thanks

Oct 19 '05 #6

This discussion thread is closed

Replies have been disabled for this discussion.