In this example, the rule run on the load of a step and initializes both a date only field and a date+time field to the present date/time.
Rule Logic
The below logic gets the current date and builds date and date-time values appropriate to initialize the fields. The fields are only initialized if they do not already have a value set.
// Initialize a date and date/time to today and now respectively
// get today's date
const now = new Date();
const today = `${now.getFullYear()}-${(now.getMonth() + 1).toString().padStart(2, '0')}-${now.getDate().toString().padStart(2, '0')}`;
const nowInUtc = `${now.getUTCFullYear()}-${(now.getUTCMonth() + 1).toString().padStart(2, '0')}-${now.getUTCDate().toString().padStart(2, '0')}` +
`T${now.getUTCHours().toString().padStart(2, '0')}:${now.getUTCMinutes().toString().padStart(2, '0')}:${now.getUTCSeconds().toString().padStart(2, '0')}Z`;
// only initialize the response date if not already set
if (!ResponseDate.value)
ResponseDate.value = today;
// only initialize the event date and time if not already set - set it in UTC
if (!EventDateTime.value)
EventDateTime.value = nowInUtc;