Evidently, he can't cope with a change like that or follow your adult logic.
You should have explained before hand, eg:
'We could stay here longer, but that means no time for the park today - we could go to the park tomorrow instead.
Or we can leave here now and go to the park.'
For you, the logic was clear, staying longer = no time for park, put park plan aside til tomorrow.
For him though, the expectation was disco then park. Time (particularly when it is still light outside until late) is far less meangful at that age, as he doesn't have to think about all the things you need time for -thats your job.
The crashing disappointment of your expectations not being fulfilled far overrides the nice things like 'I had a nice time at the disco' and 'I had an icecream', many kids of his age would not be able to over-ride the emotion of 'now' with the memory of nicer experiences in the recent past.
Then add in it being the end of a long day and you are effectively turning the volume up to 11 on those emotions.
Im really not seeing evidence of a lack of empathy here from him to you - but that is still in development for him and it might be that he struggles to see how others may perceive things differently to him, or you may simply be expecting way too much!
Whilst technically, kids start to develop a sense of empathy from around 3 on, a lot of it is mimicking adult responses, and performing expected/taught behaviours (saying sorry, giving someone a hug if they hurt themselves) rather than a true understanding and ability to imagine what someone else feels. Full, adult levels of empathy aren't there until early to mid teens!!