import struct def split_date (date): numdays = int(date) time_part = date - numdays time = get_time(time_part) fdate = days_since_1900(numdays) return "%s %s" % (fdate, time) def get_time(time): time_part = time * 86400 seconds = time_part % 60 time_part = time_part / 60 minutes = time_part % 60 time_part = time_part / 60 hours = time_part % 24 return "%02d:%02d:%02d" % (hours, minutes, seconds) def days_since_1900(days): mdays = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] years = int(days / 365) days = days - (years *365) if ((years % 4) == 0): mdays[1] = 29 leapyears = int(years/4) leapyears = leapyears + 1 days = days - leapyears cmonth = 1 for month in mdays: if (days > month): cmonth = cmonth + 1 days -= month return "%02d/%02d/%04d" % (days, cmonth, years+1900) def test_opm_date(): # 2006-05-04 15:43:21 tlen_raw = "\x6a\x03\x9d\xf6\x34\xf7\xe2\x40" opm_raw = "\x5c\x8f\xc2\x35\xba\xbd\xe2\x40" tlen_date, = struct.unpack("