Game was originally due to be played 30th. That went tits-up for a variety of reasons - primarily there were several performances of Peter Pan at Wembley Arena which would've bought children to the area for a London derby and clogged up the transport. Early on the 30th before Peter Pan was impossible because it would then clash with the Old Firm Derby, which has to have that slot to avoid heavy drinking and rioting in Glasgow.
When the TV selections were done Sky were therefore asked to move it away from the Saturday slot, and tried for New Year's Eve. This ran into major safety problems due to a lack of police and transport availability, which we tried to get around but were told we'd have to restrict capacity to 43k (ST holders and away fans only, no members or general sale).
By the time this was clear it was too late to move the Swansea game since tickets had been sold, travel booked etc for both home and away fans. That left tonight, or next Thursday. Tonight was probably worse for all parties - shorter notice for the club and fans with tickets not being sold until the date was confirmed, Sky already having a televised game, and the team having less rest, so next Thursday it was.
The ultimate blame for this probably lies with the club. Before the fixtures are compiled every club is meant to inform the league of dates they can't do for whatever reason, as well as any other requests they want to make. We should have seen the Peter Pan bookings at Wembley Arena and requested an away fixture in this slot, but with us playing away from our normal ground this was clearly missed resulting in this fiasco.