St-Pierre will face the former Strikeforce champion at the Bell Centre on March 16 in UFC 158, promoter Dana White confirmed Saturday.
"There's been a lot of talk about who I should fight next but this was really the only choice for me," said the Montreal native in a statement. "He's made it personal and I personally can't wait."
St-Pierre and Diaz were originally set to meet in October 2011 but Diaz was dropped from the fight for failing to show up for a pair of news conferences.
He was replaced by Carlos Condit, who beat Diaz in February for the interim title after St-Pierre injured his knee in training.
St-Pierre (23-2) beat Condit by unanimous decision in Montreal last month and has put a proposed super-fight with Anderson Silva aside to face Diaz (27-8-1).