Vent about husband:

Whenever I nicely asked my husband what took him 35mins longer to get home, he started screaming at me in front of our 3 year old and called me cunt, bitch, dumb fuck, multiple times in 5 min. Then he said he fucking hates me (which he's never said ever in 5 years being together). And told me that I'm a lazy fuck who does nothing all day (I've been pregnant and sick and today was the first day I didn't force myself to clean) because I'm a stay at home mom and that I have no right to even question him. 
How can he act normal and sweet all day and then come home and say such hateful, disgusting things to me? 
My heart is hurting right now, bad. I'm trying my best to stay calm and do not know how to handle this. 
My 3 year old is going to my in laws for the night, so I'm going to be alone with him all night. Suggestions?