I had the same problem with my DH, and (mostly) fixed it, completely accidentally. He is not diagnosed with anything and has never looked into that route, but I've suspected he's a bit further up the ADHD spectrum than the average person, although possibly not by much.
First off is to say my DH has the enthusiasm of a puppy (usually one of the reasons I love him!). So it's not because he's selfish, it's because he was genuinely like "oh crap, I messed up today, next time I'll be fine though" and genuinely believed it every single day. It was driving me up the wall, because he was forever honestly optimistic it would be different next time, even though it never was (I am pessimistic anyway, so I never assumed anything other than him being late).
I yelled. I nagged. I explained why it was important to me. I let him see the consequences of things like missing out on stuff (we are self-employed so there's no boss to fire him if he's late; our employees aren't going to say anything). We had endless conversations about it that went nowhere because he was adamant next time he'd be on time. I made lists for him. I got him to make lists. Set alarms for different stages of tasks. Apps. I tried everything mentioned in this thread and more. Nothing worked, in fact it usually led to an argument.
One day while he was supposed to be leaving for something I just happened to say to him, "How can I help you get out of the house faster?"
This turned out to be a magic phrase for us for some reason, as simple as it is. I think it works for us because:
- It instantly turns you into a team instead of being on opposing sides.
- It reminds him of the time and which tasks he's trying to complete.
- It's a single, memorable goal/outcome so easier to focus on.
- He is very much a details person, so he's often focused on what he's doing at the time rather than looking at the (slightly) bigger picture of the end goal of getting out of the house, so it reminds him that he has other things to do and can't spend half an hour going through his work emails.
- As a (genuine) form of help, it's not something that's taken as nagging, passive-aggressive, or anything someone can really find a problem with.
It has to be said at the time someone is trying to do something, not as a night-before conversation, theoretical/general discussion etc., and is best before he's actually late and still has enough time to be on time (there's still the optimism he can make it if he hustles, and he's not being set up to fail).
At first he would say things like, "can you grab my water bottle please while I pack up my laptop" or something like that.
After a while it became "Nothing, thanks" - he was planning ahead and getting more on track.
A while after that I stopped needing to say it at all. It doesn't mean he's always magically on time, sometimes he's not, but even on those days he's a lot less late than he used to be (sometimes he was 4-5 hours late for things, and now it's more like 20 mins).
Not saying it will work for anyone else but made a huge difference to us, so maybe worth a try?