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("<d", tlen_raw)
	opm_date, = struct.unpack("<d", opm_raw)
	print split_date(tlen_date)
	print split_date(opm_date)
