After a lot of trial and error following the myriad divergent suggestions here, I settled on this setup, which works for me:
// GET WIX DATA READY
import wixData from 'wix-data';
// WHEN PAGE READY
$w.onReady(function () {
// workshops
$w("#dataset8").onReady( () => {
// when repeater is ready
$w("#repeater5").onItemReady( ($w, itemData, index) => {
const monthNames = ["JAN", "FEB", "MAR", "APR", "MAY", "JUN", "JUL", "AUG", "SEP", "OCT", "NOV", "DEC"];
const startDate = itemData.startDate.getDate().toString();
const endDate = itemData.endDate.getDate().toString();
const startMonth = monthNames[itemData.startDate.getMonth()];
const endMonth = monthNames[itemData.endDate.getMonth()];
const startTime = itemData.startTime.toString();
const endTime = itemData.endTime.toString();
const startTimeDisp = startTime.substring(0,5); // returns hh:mm
const endTimeDisp = endTime.substring(0,5); // returns hh:mm
const trial=itemData.startDate;
// FORMAT DATE TEXT OUTPUT PER ABOVE CONSTANTS
$w("#text39").text = startMonth + " " + startDate + " - " + endMonth + " "+endDate;
$w("#text52").text = startTimeDisp + " - " + endTimeDisp;
...etc.