Danny, 28, suffered a "complete tear of the front cruciate ligaments in his right knee" at the team's pre-season training camp in Italy, Zenit said on their website.
The flashy midfielder was out of action for almost a year after tearing cruciate ligaments in the same knee in 2009.
He injured his knee again last November, missing several games, including Portugal's Euro 2012 play-off against Bosnia.
"I don't know why this [injury] had to happen to me again," Danny said on the club's website.
"I keep thinking about the knee. I don't have much physical pain there, I have it in my heart. It's much worse in my head. But I will do everything I can to come back and be a winner."
Zenit host Portugal's Benfica in the Champions League last 16, first leg tie next week.
Get the best features, fun and footballing frolics straight to your inbox every week.
Thank you for signing up to Four Four Two. You will receive a verification email shortly.
There was a problem. Please refresh the page and try again.