Chief election commissioner Nurul Huda said in a nationally broadcast speech that all preparations have been made for ‘fair’ polls.
The opposition has expressed fears that the election will not be democratic and has threatened protests.
Detained opposition leader Khaleda Zia was sent sent back to jail a few hours before the announcement, after a month of treatment in hospital.
Zia will almost certainly be banned from contesting the election as she has been jailed for corruption and has virtually no time to appeal.
Her Bangladesh Nationalist Party (BNP) boycotted the last election in 2014 over fears it would be rigged. The BNP and its allies have not yet said whether they will take part in the December poll.
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” for all contenders 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.
The BNP and its allies have held talks with Prime Minister Sheikh Hasina on their election demands which included releasing the party leader but Hasina rejected the move.
Hasina also turned down the opposition request to dissolve parliament and let a neutral caretaker government assume office ahead of the election.