469,349 Members | 1,697 Online
Bytes | Developer Community
New Post

Home Posts Topics Members FAQ

Post your question to a community of 469,349 developers. It's quick & easy.

good ways to convert string into time

hi,

i have a string as follows

18Nov2003:18:23:43:405

Is there an easy way to convert that to absolute time? What i really
want to do is to parse these times from a log file and do time
comparisons, averages, stop minus start (elapsed).

Probably create my own conversion table i guess?

thanks
Jul 18 '05 #1
5 23651
Hank wrote:

i have a string as follows

18Nov2003:18:23:43:405
It's a minor point, but what happens for days-of-the-month that are
less than 10? Leading zero, or one character shorter? Same question
goes for the other fields, I suppose...
Is there an easy way to convert that to absolute time? What i really
want to do is to parse these times from a log file and do time
comparisons, averages, stop minus start (elapsed).

Probably create my own conversion table i guess?


Probably not, actually...

-Peter
Jul 18 '05 #2
Sac
Hank wrote:
hi,

i have a string as follows

18Nov2003:18:23:43:405

Is there an easy way to convert that to absolute time? What i really
want to do is to parse these times from a log file and do time
comparisons, averages, stop minus start (elapsed).

Probably create my own conversion table i guess?

thanks

Hank,

A source that may be of interest to you is "Text Processing in Python"
by Dr. David Mertz.

Excellent reference.
Jul 18 '05 #3
On Tue, Nov 18, 2003 at 09:58:08AM -0800, Hank wrote:
hi,

i have a string as follows

18Nov2003:18:23:43:405

Is there an easy way to convert that to absolute time? What i really
want to do is to parse these times from a log file and do time
comparisons, averages, stop minus start (elapsed).

Probably create my own conversion table i guess?
time.strptime

http://www.python.org/doc/lib/module-time.html


thanks
--
http://mail.python.org/mailman/listinfo/python-list


Jul 18 '05 #4
<quote name="Hank" date="1069145888" email="so*********@yahoo.ca">
i have a string as follows

18Nov2003:18:23:43:405 Is there an easy way to convert that to absolute time? What i really
want to do is to parse these times from a log file and do time
comparisons, averages, stop minus start (elapsed).

Probably create my own conversion table i guess?

</quote>

You can use time.strptime:
strptime(string, format) -> struct_time

Parse a string to a time tuple according to a format specification.
See the library reference manual for formatting codes (same as strftime()).

Gerrit.

--
Mozilla _is_ the web: it grows faster than you can download it.
1011001 1101111 1110101 1110010 1110011 0101100
1000111 1100101 1110010 1110010 1101001 1110100

Jul 18 '05 #5
On 18 Nov 2003 09:58:08 -0800, so*********@yahoo.ca (Hank) wrote:
hi,

i have a string as follows

18Nov2003:18:23:43:405

Is there an easy way to convert that to absolute time? What i really
want to do is to parse these times from a log file and do time
comparisons, averages, stop minus start (elapsed).

Probably create my own conversion table i guess?

thanks


Quick and dirty using the time module (and re to split your string)
Not tested beyond what your see here!

====< s2t.py >==================
import time,re
rxo = re.compile(r'(\d+)([a-zA-Z]+)(\d+):(\d+):(\d+):(\d+):(\d+)')
monthnums = dict([(mo,i+1) for i,mo in enumerate(
'Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec'.split())])
def s2t(s, dst=-1): # guess daylight svgs
da,mo,yr,hr,min,sec,ms = rxo.search(s).groups()
mo = monthnums[mo]
tinfo = map(int, (yr,mo,da,hr,min,sec,ms))
ms = tinfo.pop()
return time.mktime(tinfo+[0,0,dst])+ms/1000.0
================================
import s2t
s2t.s2t('18Nov2003:18:23:43:405') 1069208623.405 import time
time.ctime(s2t.s2t('18Nov2003:18:23:43:405')) 'Tue Nov 18 18:23:43 2003'

IOW, s2t converts your time info to a floating point number in seconds from the epoch,
which e.g., time.ctime and other time functions can use.

The milliseconds (I assumed) are ignored by ctime, but I tacked them on in the number returned.
(Note that floating point won't represent all decimals accurately, but it should be good rounded
to ms, e.g.,
from ut.exactdec import ED
ED(s2t.s2t('18Nov2003:18:23:43:405'),'all') ED('1069208623.4049999713897705078125')

That's all the bit info. Looks like a good four 9's below your ms unit.
ED(s2t.s2t('18Nov2003:18:23:43:405'),'all').round( 3) ED('1069208623.405')
PS. I think there is a bug in time.mktime -- I accidentally got it trying to find time zero:
s2t.s2t('01Jan1970:00:00:00:000', 1) 25200.0 s2t.s2t('31Dec1969:23:00:00:000', 1) 21600.0 s2t.s2t('31Dec1969:17:00:00:000', 1) 0.0 s2t.s2t('31Dec1969:17:00:00:000', 0) 3600.0 s2t.s2t('31Dec1969:17:00:00:000', 1) 0.0 s2t.s2t('31Dec1969:16:00:00:000', 1)

(boom)

I got:

The instruction at "0x7802a7ff" referenced memory at "0x00000000". The memory
could not be "read".

That shouldn't happen no matter what garbage I type as args, ISTM ;-/
Guess I'll post a plainer mktime example separately.

Regards,
Bengt Richter
Jul 18 '05 #6

This discussion thread is closed

Replies have been disabled for this discussion.

Similar topics

5 posts views Thread by altergothen | last post: by
5 posts views Thread by simon | last post: by
12 posts views Thread by Peter Lin | last post: by
12 posts views Thread by apple.davinci | last post: by
6 posts views Thread by bwaichu | last post: by
8 posts views Thread by deepak_kamath_n | last post: by
1 post views Thread by CARIGAR | last post: by
reply views Thread by zhoujie | last post: by
1 post views Thread by Marylou17 | last post: by
By using this site, you agree to our Privacy Policy and Terms of Use.