How do I invert this timer in BGE to make it count-down?
You could simply negate the time property (-1800 seconds) and parameter of datetime.fromtimestamp(-textObject["time"]): 



import bge 
from datetime import datetime

textObject = bge.logic.getCurrentController().owner
if textObject["time"] &lt; 0:
    time = datetime.fromtimestamp(-textObject["time"])
    textObject.text = '{:%M:%S}'.format(time)