Quick answer
The question decides the form: когда́? (when), как до́лго? (how long), на ско́лько? (for how long), за ско́лько? (within what time).
The core table
| Question | Form | Example |
|---|---|---|
| когда́? — day | в + accusative | в сре́ду, в суббо́ту |
| когда́? — month / year | в + prepositional | в ма́е, в э́том году́ |
| когда́? — week | на + prepositional | на э́той неде́ле |
| когда́? — season | bare instrumental | ле́том, зимо́й |
| как до́лго? | bare accusative | два часа́, всю неде́лю |
| на ско́лько? | на + accusative | на два дня — for two days |
| за ско́лько? | за + accusative | за два дня — within two days |
| че́рез ско́лько? | че́рез + accusative | че́рез час — in an hour |
The oddity worth noticing: weeks take на while months take в — на э́той неде́ле but в э́том ме́сяце.
за or на?
These three catch out almost everyone. За measures how long a completed action took. На states the intended duration of a stay or a loan. Че́рез counts forward from now.
The ones with no preposition at all
Durations and some time words stand bare in the accusative: весь день (all day), ка́ждое у́тро (every morning), всю ночь (all night), два го́да (for two years). Seasons and parts of the day use the bare instrumental: ле́том, у́тром, ве́чером, но́чью, днём.
у́тром, not в у́тро
Parts of the day are instrumental with no preposition — у́тром, днём, ве́чером, но́чью. The only one that looks like an exception is в по́лдень (at noon) and в по́лночь (at midnight).
Typical mistakes
в э́той неде́ле
на э́той неде́ле
Weeks take на.
Я прие́хал за два дня — meaning a two-day stay
Я прие́хал на два дня.
на for intended duration, за for time taken.
Check yourself
Which is correct for “this week”?