outputting time in microseconds or milliseconds

Dave Angel davea at davea.name
Sun Aug 4 09:38:43 EDT 2013


matt.doolittle33 at gmail.com wrote:

> ok so now i import the module like this:
>
>    from time import strftime, time
>
> i made the write statement like this:
>
>    self.logfile.write('%s\t'%(str(strftime("%Y-%m-%d", ))))
>    self.logfile.write('%s\t'%(str(strftime("%H:%M:%S", ))))
>    self.logfile.write('%s\t'%(str(time())))
>
> (oh and btw,i know the code is hacker ugly).  
> and the output is this:
>
> 2013-08-03	23:59:34	1375588774.89
> 2013-08-03	23:59:35	1375588775.06
> 2013-08-03	23:59:35	1375588775.25
> 2013-08-03	23:59:35	1375588775.43
> 2013-08-03	23:59:35	1375588775.80
> 2013-08-03	23:59:35	1375588775.99
> 2013-08-03	23:59:35	1375588775.99
> 2013-08-03	23:59:35	1375588775.99
> 2013-08-03	23:59:35	1375588776.00
> 2013-08-03	23:59:36	1375588776.15
> 2013-08-03	23:59:36	1375588776.15
> 2013-08-03	23:59:36	1375588776.16
> 2013-08-03	23:59:36	1375588776.16
> 2013-08-03	23:59:36	1375588776.16
> 2013-08-03	23:59:36	1375588776.16
> 2013-08-03	23:59:36	1375588776.16
> 2013-08-03	23:59:36	1375588776.16
> 2013-08-03	23:59:36	1375588776.16
> 2013-08-03	23:59:36	1375588776.34
> 2013-08-03	23:59:36	1375588776.35
> 2013-08-03	23:59:36	1375588776.35
> 2013-08-03	23:59:36	1375588776.35
>
> the first two columns are for eyes so if they are a microsecond apart it doesn't matter.

But if the time is close enough to midnight, they'll be a *day* apart,
as I (and others) said before. It's also hard to imagine why you
resist the good advice you've been getting about formatting. You can
do both the date and time with one call to strftime().

> the numbers in the third column are for calculating duration which is
> where i need the precision. 
>
> Why is it only giving me the centisecond precision?  the docs say i should get microsecond precision with the code i put together.
>

Have you done any experimenting to decide which logic was losing those
extra digits?  Sit in the debugger, and do a  t = time.time()

Then investigate what t looks like, 
by repr(t), str(t), and "something" %t

(for various values of "something")
....

from time import time, localtime, strftime

now = time()   #make a single call to get the time in seconds (float)
localnow = localtime(now)

out12 = strftime("%Y-%m-%d\t%H:%M:%S\t", localnow)
out3 = "%.6f" % now
self.logfile.write(out12 + out3)

You still have the problem that out12 is in the local time zone, while
out3 is in DCT.  But as you say, these are for different audiences, and
presumably you won't really be putting them in the same file.

-- 
DaveA




More information about the Python-list mailing list