The OpenERP ORM has a create and write method. You will need to override both as they both act as on_submit type methods but are called for new or existing records.
All you do is override one or both methods and call super to make sure the record is actually written then do whatever you want. You can also intercept the write and make changes. For a create the code would be:
def create (self, cr, uid, values, context = None):
new_id = super(MyObject, self).create(cr, uid, values, context = context)
# Do stuff here. Can look in values dict to see what has changed
return new_id
The write method is much the same except you also get the ids to be written.
OpenERP already has create and write dates but those are there for OpenERP auditing and locking and you should probably implement your own date/time marker. The easiest would be to make it a functional field and set store=True so it is recalculated and stored everytime the record is written