On Jan 26, 12:48 am, goldtech <[EMAIL PROTECTED]> wrote: > snip > > > > > try this: > > > val = oRS.Fields(dt).Value > > print type(val) > > this gives: <type 'time'> > > > print float(val) > > yes, it gives 0.0 > > But there should be a way to print what is *actually in the field*.
What is "actually in the field" is a bunch of bits -- in this case all zero. What you *see* is quite another matter. > When I open the DB table in Access I see: 12:00:00 AM. And if you were to close Access, go Start / Control Panel / Regional and Language settings, change the Time display format to HH:mm:ss, and go back to look at your database, you'd see 00:00:00 ... send a copy of your database to someone in another country and they'd likely see something else again. > > That's what I want - the value, and the form of the value, exactly as > seen in the field... > > As an aside, the roughly eqivalent code in Perl will print the > "12:00:00 AM" - (the trick for the date types in Perl is to add: "use > Win32::OLE::Variant;" > > There has to be a way:^) C:\junk>type goldtech.py def time_format_12(day_fraction): assert 0.0 <= day_fraction < 1.0 seconds = int(day_fraction * 60 * 60 * 24) minutes, second = divmod(seconds, 60) hour, minute = divmod(minutes, 60) if hour >= 12: tag = 'PM' else: tag = 'AM' hour12 = (hour - 1) % 12 + 1 return '%02d:%02d:%02d %s' % (hour12, minute, second, tag) if __name__ == "__main__": import sys args = sys.argv[1:] if args: tests = map(float, args) else: tests = ( [0.0, 0.5, 0.9999999] + [(h + 0.99) / 24.0 for h in (0, 1, 11, 12, 13, 23)] ) for test in tests: print "%8.6f %s" % (test, time_format_12(test)) C:\junk>goldtech.py 0.000000 12:00:00 AM 0.500000 12:00:00 PM 1.000000 11:59:59 PM 0.041250 12:59:24 AM 0.082917 01:59:24 AM 0.499583 11:59:23 AM 0.541250 12:59:24 PM 0.582917 01:59:24 PM 0.999583 11:59:23 PM C:\junk>goldtech.py 0.1 0.01 0.001 0.100000 02:24:00 AM 0.010000 12:14:24 AM 0.001000 12:01:26 AM C:\junk> -- http://mail.python.org/mailman/listinfo/python-list