Okay, that worked. Here is what I came up with (for a string attribute named “testDatetime”):
def getDatetime(self):
date = None
if cmds.listAttr(self.nodeName, string='testDatetime'):
dateStr = cmds.getAttr(self.nodeName+'.testDatetime')
if dateStr:
try:
date = datetime.datetime.strptime(dateStr, self.getDatetimeFormat())
except ValueError as e:
cmds.warning(e.message)
return date
def setDatetime(self, datetimeValue):
if cmds.listAttr(self.nodeName, string='testDatetime'):
# Convert from a datetime object to a string
try:
dateStr = datetimeValue.strftime(self.getDatetimeFormat())
except AttributeError as e:
if not isinstance(datetimeValue, datetime.datetime):
t = datetimeValue.__class__.__name__
errMsg = ('Function "setDatetime" expects a datetime '
'object, but received a {0} instead').format(t)
raise rer.RetroTypeError(errMsg)
else:
cmds.warning(e.message)
return
cmds.setAttr(self.nodeName+'.testDatetime', dateStr, type='string')
def getDatetimeFormat(self):
return '%Y/%m/%d %H:%M %p'