Kate did become a Princess, so let's start with her before moving to Diana.
The confusion comes because, formally, British nobility often have several titles each, and if you only use one, you use the 'major' one. (Though to even further confuse things, which one is major depends on where in the UK you are.)
So far so good?
Now the bit that no-one expects ... Prince isn't always senior to Duke.
You can be a Prince for one of two reasons. Firstly, you might be head of a Principality. Secondly, you might be a 'minor' (ie non-Sovereign) Royal.
A Royal Duke (which is what William is) is senior to a 'courtesy' Prince. A really good example of this are the offspring of Prince George, Duke of Kent, who was the younger brother of King Edward VIII and King George VI.
Prince George had two sons and a daughter:
- Prince Edward was born in 1935.
- Princess Alexandra was born in 1936.
- Prince Michael was born in 1942.
In 1942, when George died, Edward became 'Prince Edward, Duke of Kent,' or 'The Duke of Kent' for short. His little brother Michael is 'only' a Prince.
So, back to Kate. There's a quirk in the in 'formal style,' married couples both adopt the first name of the husband. Don't get me started on that [while it seems sexist, it's still better than what males get if they marry females with titles] ... but, therefore, Kate is officially:
Her Royal Highness Princess William, Duchess of Cambridge, Countess of Strathearn, Baroness Carrickfergu.
So, she is a Princess, but:
- If you are in England, calling her 'Her Royal Highness, The Duchess of Cambridge' is the correct short version.
- If you are in Scotland, however, you use the senior Scottish title 'Her Royal Highness, The Countess of Strathearn.'
So, back to Diana. At the time she married Charles, Charles was a Prince twice over. Firstly, he was, from the moment he was born, a Prince by virtue of being a minor royal.
However, on the 1st July 1969, he was Invested as Prince of Wales (a Principality). At that point, the Prince became his major title in England (apart from Cornwall), and Wales.
So, on marrying him, Diana took the major title Princess.
In Scotland, however, Charles is Duke of Rothersay. And in Cornwall (a county in the South West of England), he's Duke of Cornwall. In those places, Diana's major title was Duchess.
Confusing? Pretty much, but when you're children or grandchildren of the Head of State in what is technically a 1000-year-old Theocracy, you pretty much get to make up the rules.