Problem solved - the date field contained a string that the map couldn't interpret as a date. I created an additional date field, then I created an additional attribute in each graphic containing an actual date object. I also changed the workflow based on the time slider samples and feature layer samples:
- create a feature layer
- add a listener to the map's 'layers-add-result' event to init the time slider
- add the feature layer along with other graphics layers to the map
- configure the time slider
- when data arrives from the server, create an array of graphics; determine if the data load has a time extent
- if there's a time extent, create a time extent object and add the graphics to the feature layer using the 'applyEdits' method
- set/change the time slider's ticks by applying the time extent
- start the time slider
- set the map's time extent to the time extent object