1945年夏,国军将军雷义方(黄晓明饰)在平原战场率兵大败日军。
国军通讯兵佟大庆(佟大为饰)俘获了台湾籍日军军医严泽坤(金城武饰)。日军投降之后,三人各行其道。雷义方回到了上海,认识了豪门千金周蕴芬(宋慧乔饰)。两人一见钟情,不久成婚。但随即,内战爆发了。严泽坤在抗战后回到台湾,却发现曾经的恋人日本女孩雅子(长泽雅美饰)已经被遣返回日本。佟大庆则爱上了白天做护士照顾伤兵,晚上在街头招客的妓女于真(章子怡饰),两人原本各取所需照了张“结婚照”,没想到真的成了一对苦恋的情侣。 国共一场大战,国民党军全面溃败。众人都想登上太平轮,离开上海去台湾。这艘船成了最后的希望。没想到,意外的沉船改变了所有人的命运,船上近千人绝大多数都在海难中遇难。