import datetime
import time

diedtime=[1970,1,1]

#nowptr = '0'*(32 - len(nowptr))
timestamp_date = datetime.datetime(diedtime[0],diedtime[1],diedtime[2]).timestamp()

def timestamp_to_timeptr(timestamp, resolution="second"): # returns timepointer
    passing = 0
    if resolution=="second":
        passing=timestamp*1000
    elif resolution=="milisecond":
        passing=timestamp
    elif resolution=="nanosecond":
        passing=timestamp/1000
    else:
        assert TypeError("unknown type of time measurer")
    passing = int(passing)
    nowptr = '0'*(32 - len(hex(abs(passing))[2:]))
    
    if passing>0:
        nowptr = f"UNIXUSAT{nowptr}{hex(passing)[2:].upper()}"
    else:
        nowptr = f"OFCHRIST{nowptr}{hex(abs(passing))[2:].upper()}"
    return nowptr
    
def timeptr_to_storypath(timeptr_str):
    unixusat_hex = timeptr_str[8:]
    return "/".join([timeptr_str[:8]]+[ unixusat_hex[i*4:i*4+4] for i in range(0, int(len(unixusat_hex)/4))])

def split_timeptr(timeptr_str):
    unixusat_hex = timeptr_str[8:]
    return [timeptr_str[:8]]+[ int(unixusat_hex[i*4:i*4+4], 16) for i in range(0, int(len(unixusat_hex)/4))]

timestamp_date = datetime.datetime(2000,2,1).timestamp()


print(timestamp_to_timeptr(timestamp_date))
print(timeptr_to_storypath(timestamp_to_timeptr(timestamp_date)))
print(split_timeptr(timestamp_to_timeptr(timestamp_date)))

timestamp_date = datetime.datetime(2000,2,2).timestamp()

print(timestamp_to_timeptr(timestamp_date))
print(timeptr_to_storypath(timestamp_to_timeptr(timestamp_date)))
print(split_timeptr(timestamp_to_timeptr(timestamp_date)))
#[nowptr[:8]]+[ int(unixusat[i*4:i*4+4], 16) for i in range(0, int(len(unixusat)/4))]


import datetime
import time

diedtime=[1970,1,1]

#nowptr = '0'*(32 - len(nowptr))
timestamp_date = datetime.datetime(diedtime[0],diedtime[1],diedtime[2]).timestamp()

def timestamp_to_timeptr(timestamp, resolution="second"): # returns timepointer
    passing = 0
    if resolution=="second":
        passing=timestamp*1000
    elif resolution=="milisecond":
        passing=timestamp
    elif resolution=="nanosecond":
        passing=timestamp/1000
    else:
        assert TypeError("unknown type of time measurer")
    passing = int(passing)
    nowptr = '0'*(32 - len(hex(abs(passing))[2:]))
    
    if passing>0:
        nowptr = f"UNIXUSAT{nowptr}{hex(passing)[2:].upper()}"
    else:
        nowptr = f"OFCHRIST{nowptr}{hex(abs(passing))[2:].upper()}"
    return nowptr
    
def timeptr_to_storypath(timeptr_str):
    unixusat_hex = timeptr_str[8:]
    return "/".join([timeptr_str[:8]]+[ unixusat_hex[i*4:i*4+4] for i in range(0, int(len(unixusat_hex)/4))])

def split_timeptr(timeptr_str):
    unixusat_hex = timeptr_str[8:]
    return [timeptr_str[:8]]+[ int(unixusat_hex[i*4:i*4+4], 16) for i in range(0, int(len(unixusat_hex)/4))]

timestamp_date = datetime.datetime(2000,2,1).timestamp()

print(timestamp_to_timeptr(timestamp_date))
print(timeptr_to_storypath(timestamp_to_timeptr(timestamp_date)))
print(split_timeptr(timestamp_to_timeptr(timestamp_date)))

timestamp_date = datetime.datetime(2000,2,2).timestamp()

print(timestamp_to_timeptr(timestamp_date))
print(timeptr_to_storypath(timestamp_to_timeptr(timestamp_date)))
print(split_timeptr(timestamp_to_timeptr(timestamp_date)))
#[nowptr[:8]]+[ int(unixusat[i*4:i*4+4], 16) for i in range(0, int(len(unixusat)/4))]