Enter time on Dashboard and get event trigger in node-red

You can do this with cron-plus node.

There is even a dashboard demo in the built in importable flows (node-red menu, import, examples)

The demo does it with a Cron input but you could swap this out for a date and time entry field.

UPDATE...
Here is an example...

the flow...

[{"id":"5e57cc8a.617d44","type":"change","z":"d391a194.5dc1d","name":"","rules":[{"t":"set","p":"ui_add_schedule_name","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":430,"y":140,"wires":[[]]},{"id":"74778486.af6e7c","type":"change","z":"d391a194.5dc1d","name":"","rules":[{"t":"set","p":"ui_add_schedule_payload","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":440,"y":180,"wires":[[]]},{"id":"72bd34b1.c8162c","type":"change","z":"d391a194.5dc1d","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"{}","tot":"json"},{"t":"set","p":"payload.command","pt":"msg","to":"add","tot":"str"},{"t":"set","p":"payload.payload","pt":"msg","to":"ui_add_schedule_payload","tot":"flow"},{"t":"set","p":"payload.name","pt":"msg","to":"ui_add_schedule_name","tot":"flow"},{"t":"set","p":"payload.date","pt":"msg","to":"ui_add_date","tot":"flow"},{"t":"set","p":"payload.time","pt":"msg","to":"ui_add_time","tot":"flow"},{"t":"set","p":"payload.payloadType","pt":"msg","to":"str","tot":"str"},{"t":"set","p":"payload.expressionType","pt":"msg","to":"dates","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":380,"y":320,"wires":[["686860b9.e1d42"]]},{"id":"6c229cd6.643c94","type":"cronplus","z":"d391a194.5dc1d","name":"dyn schedules","outputField":"payload","timeZone":"","persistDynamic":true,"commandResponseMsgOutput":"output2","outputs":2,"options":[],"x":840,"y":360,"wires":[["602e7fbf.07c51"],["92d24e00.56bc6"]]},{"id":"59b93e8e.f37a3","type":"ui_toast","z":"d391a194.5dc1d","position":"top right","displayTime":"3","highlight":"","sendall":true,"outputs":0,"ok":"OK","cancel":"","topic":"","name":"","x":860,"y":540,"wires":[]},{"id":"8a25097f.f33ee8","type":"catch","z":"d391a194.5dc1d","name":"","scope":null,"uncaught":false,"x":180,"y":540,"wires":[["d8f45016.f727c","b1ff4896.e38c98"]]},{"id":"d8f45016.f727c","type":"ui_toast","z":"d391a194.5dc1d","position":"top right","displayTime":"3","highlight":"red","outputs":0,"ok":"OK","cancel":"","topic":"Error...","name":"","x":380,"y":540,"wires":[]},{"id":"572c480c.a34428","type":"ui_button","z":"d391a194.5dc1d","name":"Refresh","group":"73b98bf4.e404f4","order":6,"width":"1","height":"1","passthru":true,"label":"","tooltip":"Get status of jobs","color":"","bgcolor":"","icon":"fa-refresh","payload":"","payloadType":"date","topic":"list-all","x":600,"y":400,"wires":[["6c229cd6.643c94"]]},{"id":"7f1b19e2.0770e8","type":"ui_text_input","z":"d391a194.5dc1d","name":"","label":"Name","tooltip":"Schedule Name","group":"73b98bf4.e404f4","order":2,"width":"3","height":"1","passthru":false,"mode":"text","delay":"100","topic":"","x":170,"y":140,"wires":[["5e57cc8a.617d44"]]},{"id":"9ef7e36d.e2552","type":"ui_button","z":"d391a194.5dc1d","name":"","group":"73b98bf4.e404f4","order":5,"width":"3","height":"1","passthru":false,"label":"Add","tooltip":"Add or update named schedule","color":"","bgcolor":"","icon":"send","payload":"","payloadType":"str","topic":"","x":170,"y":320,"wires":[["72bd34b1.c8162c"]]},{"id":"54101ca.55d61e4","type":"ui_text_input","z":"d391a194.5dc1d","name":"","label":"Payload","tooltip":"Payload to send when schedule fires","group":"73b98bf4.e404f4","order":4,"width":"3","height":"1","passthru":false,"mode":"text","delay":"100","topic":"","x":180,"y":180,"wires":[["74778486.af6e7c"]]},{"id":"6867bde8.39bd74","type":"ui_template","z":"d391a194.5dc1d","group":"73b98bf4.e404f4","name":"","order":7,"width":"16","height":"5","format":"<style type=\"text/css\">\n.t1  {border-collapse:collapse;border-spacing:0;border-color:#ccc;}\n.t1 td{font-family:Arial, sans-serif;font-size:14px;padding:8px 3px;border-style:solid;border-width:0px;overflow:hidden;word-break:normal;border-top-width:1px;border-bottom-width:1px;border-color:#ccc;color:#333;background-color:#fff;}\n.t1 th{font-family:Arial, sans-serif;font-size:14px;font-weight:normal;padding:10px 5px;border-style:solid;border-width:1px;overflow:hidden;word-break:normal;border-color:#ccc;color:#333;background-color:#f0f0f0;}\n.t1 .t1-36r9{background-color:#000000;color:#ffffff;text-align:left;vertical-align:top}\n.t1 .t1-x2zo{background-color:#c0c0c0;font-size:small;text-align:left;vertical-align:top}\n.t1 .t1-o73e{background-color:#c0c0c0;font-size:small;text-align:center;vertical-align:top}\n.t1 .t1-5qt9{font-size:small;text-align:left;vertical-align:top}\n.t1 .t1-5qta{font-size:small;text-align:center;vertical-align:middle}\n</style>\n<table class=\"t1\">\n  <tr>\n    <th class=\"t1-36r9\" colspan=\"9\">CRON Schedules</th>\n  </tr>\n  <tr>\n    <td class=\"t1-x2zo\">Name</td>\n    <td class=\"t1-x2zo\">Expression</td>\n    <td class=\"t1-x2zo\">Payload</td>\n    <td class=\"t1-x2zo\">Description</td>\n    <td class=\"t1-x2zo\">Next run</td>\n    <td class=\"t1-x2zo\">State</td>\n    <td class=\"t1-o73e\">Delete</td>\n    <td class=\"t1-o73e\">Pause</td>\n    <td class=\"t1-o73e\">Resume</td>\n  </tr>\n  <tr  ng-repeat=\"item in msg.payload\">\n    <td class=\"t1-5qt9\">{{item.config.name}}</td>\n    <td class=\"t1-5qt9\" style=\"white-space: nowrap\" nowrap>{{item.config.expression}}</td>\n    <td class=\"t1-5qt9\">{{item.config.payload}}</td>\n    <td class=\"t1-5qt9\">{{item.status.description}}</td>\n    <td class=\"t1-5qt9\">{{item.status.nextDescription}}</td>\n    <td class=\"t1-5qta\"><i class=\"fa fa-{{item.status.isRunning ? 'play' : 'pause'}}\"> </i></td>\n\n   <td class=\"t1-5qta\">\n       <md-button class=\"md-raised\"\n        ng-click=\"send([[{payload:{command:'remove', name: item.config.name}}, {payload:{command:'list-all'}}]]);\"> <i class=\"fa fa-trash\"> </i></md-button>\n   </td>\n   <td class=\"t1-5qta\">\n       <md-button class=\"button\" \n       ng-click=\"send([[{payload:{command:'pause', name: item.config.name}}, {payload:{command:'list-all'}}]]);\"> <i class=\"fa fa-pause\"> </i></md-button>\n   </td>\n   <td class=\"t1-5qta\">\n       <md-button class=\"button\" \n       ng-click=\"send([[{payload:{command:'start', name: item.config.name}}, {payload:{command:'list-all'}}]]);\"> <i class=\"fa fa-play\"> </i></md-button>\n   </td>\n\n  </tr>\n\n </tbody>\n</table>\n\n<!--<table id=\"table\" class=\"table table-striped table-responsive-md btn-table\" >-->\n<!--     <tr>-->\n<!--        <th>Name</th> -->\n<!--        <th>Expression</th> -->\n<!--        <th>Payload</th> -->\n<!--        <th>Description</th>-->\n<!--        <th>Next run</th>-->\n<!--        <th>State</th>-->\n<!--        <th>Delete</th>-->\n<!--        <th>Pause</th>-->\n<!--        <th>Resume</th>-->\n<!-- </tr>-->\n<!-- <tbody>-->\n<!-- <tr ng-repeat=\"item in msg.payload\">-->\n<!--   <td >{{item.config.name}}</td>-->\n<!--   <td style=\"white-space: nowrap\" nowrap>{{item.config.expression}}</td>-->\n<!--   <td >{{item.config.payload}}</td>-->\n<!--   <td >{{item.status.description}}</td>-->\n<!--   <td >{{item.status.nextDescription}}</td>-->\n<!--   <td >{{item.status.isRunning ? 'Running' : 'Paused'}}</td>-->\n<!--   <td>-->\n<!--       <md-button class=\"md-raised\"-->\n<!--        ng-click=\"send([[{payload:{command:'remove', name: item.config.name}}, {payload:{command:'list-all'}}]]);\"> <i class=\"fa fa-trash\"> </i></md-button>-->\n<!--   </td>-->\n<!--   <td>-->\n<!--       <md-button class=\"button\" -->\n<!--       ng-click=\"send([[{payload:{command:'pause', name: item.config.name}}, {payload:{command:'list-all'}}]]);\"> <i class=\"fa fa-pause\"> </i></md-button>-->\n<!--   </td>-->\n<!--   <td>-->\n<!--       <md-button class=\"button\" -->\n<!--       ng-click=\"send([[{payload:{command:'start', name: item.config.name}}, {payload:{command:'list-all'}}]]);\"> <i class=\"fa fa-play\"> </i></md-button>-->\n<!--   </td>-->\n<!-- </tr>-->\n<!-- </tbody>-->\n<!--</table>-->\n\n","storeOutMessages":false,"fwdInMessages":false,"resendOnRefresh":false,"templateScope":"local","x":680,"y":480,"wires":[["6c229cd6.643c94"]]},{"id":"92d24e00.56bc6","type":"function","z":"d391a194.5dc1d","name":"Make table data","func":"if(!msg.payload || !msg.payload.result || !msg.payload.result.length){\n    msg.payload = [];\n    return msg;\n}\n\nmsg.payload = msg.payload.result;\nreturn msg;","outputs":1,"noerr":0,"x":500,"y":480,"wires":[["6867bde8.39bd74"]]},{"id":"b1ff4896.e38c98","type":"debug","z":"d391a194.5dc1d","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","x":350,"y":580,"wires":[]},{"id":"e6c74b8b.edf768","type":"link in","z":"d391a194.5dc1d","name":"Cron Events","links":["68f2f76e.aba708","602e7fbf.07c51"],"x":650,"y":540,"wires":[["59b93e8e.f37a3","fb18f558.46a2c8"]],"l":true},{"id":"fb18f558.46a2c8","type":"debug","z":"d391a194.5dc1d","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","x":830,"y":580,"wires":[]},{"id":"44052cb4.713434","type":"comment","z":"d391a194.5dc1d","name":"Dynamic cron schedules - setup by dashboard","info":"","x":550,"y":80,"wires":[]},{"id":"602e7fbf.07c51","type":"link out","z":"d391a194.5dc1d","name":"","links":["e6c74b8b.edf768"],"x":975,"y":320,"wires":[]},{"id":"ed7ceb92.c1d838","type":"ui_ui_control","z":"d391a194.5dc1d","name":"","events":"all","x":180,"y":400,"wires":[["edba13b1.d1b77"]]},{"id":"189cf32c.83a62d","type":"ui_date_picker","z":"d391a194.5dc1d","name":"","label":"","group":"73b98bf4.e404f4","order":4,"width":"3","height":"1","passthru":false,"topic":"date","x":190,"y":220,"wires":[["69c0b5ee.6f9a6c"]]},{"id":"87b0a4e5.19dca8","type":"ui_text_input","z":"d391a194.5dc1d","name":"","label":"Time","tooltip":"","group":"73b98bf4.e404f4","order":4,"width":"3","height":"1","passthru":false,"mode":"time","delay":"100","topic":"time","x":170,"y":260,"wires":[["5d0dd167.9e60c"]]},{"id":"69c0b5ee.6f9a6c","type":"change","z":"d391a194.5dc1d","name":"","rules":[{"t":"set","p":"ui_add_date","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":400,"y":220,"wires":[[]]},{"id":"5d0dd167.9e60c","type":"change","z":"d391a194.5dc1d","name":"","rules":[{"t":"set","p":"ui_add_time","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":400,"y":260,"wires":[[]]},{"id":"686860b9.e1d42","type":"function","z":"d391a194.5dc1d","name":"","func":"msg.payload.expression = msg.payload.date + msg.payload.time\nreturn msg;","outputs":1,"noerr":0,"x":600,"y":320,"wires":[["6c229cd6.643c94","edba13b1.d1b77"]]},{"id":"edba13b1.d1b77","type":"delay","z":"d391a194.5dc1d","name":"","pauseType":"delay","timeout":"200","timeoutUnits":"milliseconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":370,"y":400,"wires":[["572c480c.a34428"]]},{"id":"73b98bf4.e404f4","type":"ui_group","z":"","name":"Default","tab":"6931a0ae.df4ff","order":1,"disp":false,"width":"16","collapse":false},{"id":"6931a0ae.df4ff","type":"ui_tab","z":"","name":"CRON","icon":"dashboard","order":2,"disabled":false,"hidden":false}]

This is the original using cron entries instead of dates and times (much more flexible)...
https://flows.nodered.org/flow/79a66966a6cc655a827872a4af794b94