A cold wave is likely to freeze the city today and tomorrow with the mercury falling 7 to 9 degrees Celsius, forecasters said.
From Saturday the high will bounce back to 14 degrees.
The Shanghai Meteorological Bureau issued this year's first blue cold alert at 5pm yesterday, forecasting a fall of at least 7 degrees in the following 48 hours with widespread lows below zero tomorrow morning.
Cold air from northern China will descend this morning and temperatures will keep falling tomorrow to around freezing point. Suburban areas will be even colder.
Light to moderate rain is expected today and some northern parts may get brief sleet. Tomorrow will be sunny, if a little chilly.
Saturday will be dry and cloudy but the drizzle will return Sunday. Skies will clear up for Chinese New Year's Eve on Monday.
The recent shifts between warm and cold have triggered a high risk of flu. Residents are urged to avoid crowds, to wear masks and to wash their hands as frequently as possible.