The actor, 65, says they will wed in a "small ceremony" in southern Italy.
He told Entertainment Tonight: "We're gonna get married on the 31st, you know, in Italy.
"My birthday is on Tuesday and then we shoot out to the UK and a few places and then we're gonna get married, but a very small wedding with her family in Puglia, which is southern Italy.
"And then from there we're gonna go to the Maldives and we'll stay underwater for about two weeks."
David, 65, also revealed that he's already wearing a wedding ring.
"This ring that I've got is really special. It's my mom and dad's," he said.
"I wear it for luck and I wear it for remembrance and so I thought, you know, it's nice I don't have to go out and get another ring. I'll just keep this one."
Just a year before they got engaged, David insisted he wouldn't marry Hayley from Glynneath in South Wales because of their vast age gap.
He said in 2015: "To be honest, the reason I haven’t got married yet is because I know it’s not going to be a perfect relationship. We’re not going to grow old together, let’s face it.
“Sometimes I think I love her enough to say, ‘Go and find a man of your age and have a life. We had a great time and we love each other but...’
"That would be horrible and it would probably take years to get over."
David revealed that his proposal to Hayley, 37, in 2016 was different from his first two to Pamela Bach and Catherine Hickland because "it wasn't an ultimatum."
He said: "I don't want her to get away. I want to trap her, because this is one that I really love, and this is the one when I got down on my knees and said, 'Will you marry me?' It was from my heart. It wasn't an ultimatum.
"My other marriages were kind of like, well, you've got to get married, or there was an ultimatum. This one is something that I wanted to do."