The Russian champions' website (www.fc-zenit.ru) said the 32-year-old had torn the anterior cruciate ligament in his right knee and would be out for eight to nine months.
Danny, who has 36 caps for Portugal, was injured during Zenit's 5-2 win against Spartak Moscow on Saturday and will undergo surgery, the club said.
His absence will also be a blow to Zenit in their battle to retain the title. They are in third place with six matches remaining, two points behind leaders Rostov.
The European Championships start on June 10 with Portugal in Group F alongside Austria, Hungary and Iceland.
News that makes sense
Your trusted source for staying up-to-date with the world around you. Get free daily news updates and analysis, straight to your inbox.
(Reporting By Dmitriy Rogovitskiy; editing by Martyn Herman)
