Chief Election Commissioner Nurul Huda said in a nationally broadcast speech that preparations have been made for “fair” polls.
The opposition has expressed fears that the election in the South Asian nation of 165 million people will not be democratic and has threatened protests.
Detained opposition leader Khaleda Zia was sent back to jail a few hours before the announcement, after a month of treatment in hospital.
Zia, 73, has virtually no time to appeal her sentence for corruption and will almost certainly be banned from contesting the election against arch-rival and current prime minister Sheikh Hasina.
Her Bangladesh Nationalist Party (BNP) says some 5,000 of its activists have also been detained in a recent crackdown, depriving it a grassroots presence vital to fight any election.
The arrest of activists and prominent dissidents including student leaders and a top photographer have also cast a shadow over the buildup to the polls.
The opposition has said the charges against Zia and other party activists were deliberately planned.
The BNP boycotted the last election in 2014 over fears it would be rigged. The party and its allies had wanted this election put back to March and opposition spokesman Fakhrul Islam Alamgir told reporters opposition parties would meet to take a final decision on the December polls.
Huda said nominations had to be submitted by November 19 and called on all political parties to take part.
He promised “a level playing field” and said the army would be deployed to maintain order on polling day.
The ruling Awami League and its main ally Jatiya Party welcomed the announcement, saying they were “happy” with the voting date.
Hasina rejected demands from the BNP and its allies to dissolve parliament and let a neutral caretaker government organise the election, and to release Zia.
The rivalry between Hasina and Zia dates back three decades after they allied briefly in the late 1980s to force a military dictator to give up power.
The two alternated in power during the 1990s and 2000s until Zia decided to boycott the 2014 election.
An analyst said the BNP would have to take part this time if it was to retain credibility.
“They will be further marginalised and weakened if they don t participate in the polls,” Ataur Rahman of the Bangladesh Political Science Association.
“They will be cut off from the grassroots and may lose registration as a political party,” he said.
Rahman said the BNP, with its leader jailed and the party in disarray was likely to be beaten and Hasina s Awami League likely to win a “comfortable majority.”