One Step closer.
I've now changed my formula as follows:
substring(eval(eval(Date[Hours > 0] | Hours[. > 0] | FullPartTime[Hours > 0], 'concat(";", .)'), ".."), 2)
Output is 2016-05-09T00:00:00;AM;7;2016-05-10T00:00:00;PM;7
This at least gives me all my columns and data. I'm sure it can be done cleaner.
AM/PM is not always going to be present
Next step is to take 2016-05-09T00:00:00;AM;7;2016-05-10T00:00:00;PM;7 and turn it into 2016-05-09 7 AM : 2016-05-09 7 PM