No the article is correct, '20-hour day' is right. In this context '20-hour' is being used as an adjective. Notice the hyphen (-) connecting 20 and hour.
It's the same reason why '10-year old boy' is correct and '10-years old boy' is not.
'20 hours a day' is also correct. Notice the hyphen is not here, because here we are saying 20 hours per day.
'20-hour a day' is wrong, as is 20 hour a day.