Here is an example,
In this case you provide the macro with a date fieldname (default date) and is stores the selected value in html to an "-input" field, it retains this to keep the date displayed, however simultaneously it generates a date serial number (at noon on the selected day).
Now the date serial can be used with sort, days operator, view widget and more.
\define pick-date(fieldname:"date")
<$set name=date-fieldname value="$fieldname$">
<$set name=date-input-field value={{{ [<date-fieldname>addsuffix[-input]] }}} >
<$edit-text field=<<date-input-field>> type="date" inputActions=<<set-date-actions>>/>
</$set></$set>
\end
\define set-date-actions()
<$action-setfield $tiddler=<<currentTiddler>> $field=<<date-fieldname>> $value={{{ [all[current]get<date-input-field>split[-]join[]addsuffix[120000000]] }}}/>
\end
<<pick-date journal-date>> <$view field="journal-date" format="relativedate"/>
Here is a pick time macro;
\define pick-time(fieldname:"time")
<$set name=date-fieldname value="$fieldname$">
<$set name=date-input-field value={{{ [<date-fieldname>addsuffix[-input]] }}} >
<$edit-text field=<<date-input-field>> type="time" inputActions=<<set-date-actions>>/>
</$set></$set>
\end
\define set-date-actions()
<$action-setfield $tiddler=<<currentTiddler>> $field=<<date-fieldname>> $value={{{ [all[current]get<date-input-field>] }}}/>
\end
<<pick-time journal-time>> <$view field="journal-time" format="time"/>
Tones