关于武王进军牧野的时间,史书上的记载很是分歧,以《汉书·律历志》所引《古文尚书·武成》的记载较为原始:
惟一月壬辰旁死霸,若翌日癸巳,武王迺朝步自周,于征伐纣。粤若来二月既死霸,越五日甲子,咸刘商王纣(《逸周书·世俘解》作“维一月丙辰旁生魄,若翼日丁巳”,有错误)。
根据王国维的考定,“既死霸”是二十三日,旁死霸为二十五日。一月癸巳,是壬辰旁死霸的翌日,即二十六日,武王从周兴师伐纣。二月甲子,是既死霸之后五日,乃二十七日,武王率军到达牧野(《观堂集林》卷一《生霸死霸考》)。《书序》说:“惟十有一年武王伐殷,一月戊午师渡孟津,作《泰誓》三篇。”比《武成》早一个月。《史记·齐世家》说:“武王十一年正月甲子,誓师于牧野伐商纣。”同样比《武成》早一个月。所以会有一月之差,该是汉人依据当时的正朔观念以及流行的殷正、周正之说,认为周未克殷以前,当依殷正,殷正较周正早一月,因而提前一月。《史记·周本纪》说:“十一年十二月师毕渡盟津,二月甲子昧爽武王朝至于商郊牧野。”显然有错误。从渡盟津到牧野,应该不过一旬,不该相隔两月之久。
武王于一月二十六日癸巳,从周的国都出发,经历二十五天,到二月二十一日戊午在盟津渡河。从盟津誓师后出发,又经历六天,到二十七日甲子,到达牧野前线,当天决战就取得决定性胜利。从盟津到牧野,约有三百里以上路程,采取急行军,平均每天行军五十多里。当时这一带交通条件是比较好的,从殷墟卜辞来看,这一带正好是殷王经常的狩猎区,殷王常常驾驶马车到盟津以北、太行山南麓从事狩猎活动。因此用四匹马驾驶的战车,每天进军五十多里是可以做到的。
武王统率的锐兵,所以能够在甲子这天展开决战,因为在前一天癸亥夜晚,赶到牧野后,连夜已布置好了阵势。《国语·周语下》记载伶州鸠说:“王以二月癸亥夜陈,未毕而雨。”夜晚虽然天气不好,布阵未毕而雨,还是作好了布置的。牧野一战是在甲子这天,古书记载是一致的。《尚书·牧誓》就说是在甲子昧爽誓师的。牧野之战,周师在甲子一天内取得全胜,古书记载也是一致的。《吕氏春秋·首时》说:武王“立(通作“莅”)十二年而成甲子之事”。《吕氏春秋·贵因》说:武王“故选车三百,虎贲三千,朝(早)要甲子之期而纣为禽(擒)”。《吕氏春秋·简选》又说:“武王虎贲三千人,简车三百乘,以要甲子之事于牧野而纣为禽。”这个战役在甲子这天,从清晨开始,到黄昏就取得全胜,迫使殷王纣自杀。《逸周书·世俘解》说:
商王纣于商郊,时甲子夕,商王取天智(指高级美玉)、王琰及庶玉环身以自焚(“及庶玉环身”原误作“0120-01身厚”,从顾颉刚依据《北堂书钞》卷一三五、《史记·周本纪》正义、《太平御览》卷七一八所引校正)。
这是殷王纣看到战斗失败、快要被擒的时候,不得已而自焚的。
关于进军牧野的路线,《荀子·儒效》有记述:
武王之诛纣也,行之日以兵忌,东面而迎太岁。至汜而泛,至怀而坏,至共头而山隧(通作“坠”),霍叔惧曰:“出三日而五灾至,无乃不可乎?”周公曰:“刳比干而囚箕子,飞廉、恶来知政,夫又恶有不可焉。”遂选马而进,朝食于戚,暮宿于百泉,厌旦于牧之野。
汜(音祀),卢文弨、汪中校改作“氾”(音凡),以为即河南的氾水。按氾水有南氾、东氾、西氾之别,都不是从盟津渡河必经之地。我们认为,“汜”字不误,“汜”不是地名。《尔雅·释丘》:“穷渎,汜。”郭注:“水鱼所通者。”当因积水而泛滥。怀后来为苏国之邑,见《左传·隐公十一年》,在今河南武陟西南。怀在盟津东北二百多里。共后来成为共伯封国。见《左传·隐公元年》,在今河南辉县,共又在怀东北二百多里。百泉在今辉县北十里。戚地不详,亦当在辉县附近。据《韩诗外传》卷三第十三章:“武王伐纣于邢丘……乃修武勒兵于宁,更名邢丘曰怀、宁曰修武。”宁在今河南获嘉,正当怀、共之间,是从怀到共必经之地。牧野为地区名,牧一作坶,《说文》:“坶,朝歌南七十里。”《水经·清水注》:“自朝歌以南,南暨清水,土地平衍,据皋跨泽,悉坶野矣。”清水即今卫河上游,朝歌即今淇县,旧称朝歌镇。牧野的范围,从今淇县以南,到卫河以北地方。今淇县距卫河,距离在二十里到六十里之间。根据荀子所述,可知武王率军渡过今孟县西南的盟津之后,向东北行,经泛滥的“汜”到今武陟西南的怀,再东北行到今获嘉的宁,又东北行到今辉县的共,一度食宿于戚和百泉,两地都该在共的附近。更由此东北行而进入牧野。