do not update the text field if there is no change to the text.

this prevents the cursor location from being updated unnecessarily when you are entering in data manually
if the date can be parsed and it isn't similar to the normal format, read it in
in getColor, set the year correctly, for years < 1000