Hi. This should help you with the date part of your question.
todateobject[dateinput_] := Interpreter["Date"][dateinput] /. Failure[y__] :> Missing[];
simpledatesetter[Dynamic[x_]] := DynamicModule[{t = x},
DynamicWrapper[ InputField[Dynamic[t], String, ContinuousAction -> False],
x = todateobject[t], TrackedSymbols :> {t}]];
Column[{simpledatesetter[Dynamic[x]], Dynamic@x}]