Save date and time form fields
Use the form parser deliberately and distinguish it from direct property updates.
Zotonic can combine date and time form fields when converting a list of key/value pairs into resource properties. For example:
Props = [{<<"dt:ymd:0:date_end">>, <<"2026-10-07">>}],
m_rsc:update(ResourceId, Props, Context).
The dt: prefix invokes date recombination; ymd identifies the date parts and date_end is the destination property. The 0 default supplies the start of the day; 1 supplies the end of the day when time parts are absent. Include the corresponding time field when the user chooses a specific time.
Use the current admin date/time templates as examples, and keep the selected timezone explicit. Test a date-only value, a date with time, an empty value and a daylight-saving boundary. Do not replace this form list with a map and expect the special field names to be recombined: direct maps should contain the final property value instead.
In a custom event handler, verify resource-edit permission, validate the submitted date and handle both {ok, Id} and {error, Reason} from the update. Reload or show success only after the update succeeds.