Problem specification
If your want to use your routes like shown in your examples, you will have to specify your routes with regular expressions. Leaving it like it is your routes will confirm routes like /blog/1984/1/my-post/
to both of your specified route handlers.
You have to specify them like in these examples: http://expressjs.com/en/guide/routing.html#route-paths
Solution
There you will declare year
as a 4 digit parameter, quarter
as one digit, month
as two digit, day
as two digit and post
as a alphanumeric combiniation with dashes (this is common slug):
app.get('/blog/:year(\d{4})/:quarter(\d{1})/:month(\d{2})?/:day(\d{2})?/:post([a-z0-9-]+$)', routes.views.post);
app.get('/blog/:year(\d{4})/:quarter(\d{1})/:month(\d{2})?/:day(\d{2})?/', routes.views.post_listing);
Further suggestions for helping yourself
There is also a brilliant tool for testing and playing around with express routes: http://forbeslindesay.github.io/express-route-tester/