Telling when and how long is not so simple in Croatian. There are constructs involving cases and prepositions and a very weird feature with telling "how long". Knowledge of numbers-with-nouns in Croatian is essential.
Past Intervals and the Time-Phrase Rule
First, let me explain a fortunate similarity between English and Croatian that can help you to determine the proper verb aspect in Croatian. In English, there are two ways to express how long something took: using "for" (e.g. "I lived there for a year") and using "in" (e.g. "I built it in three months"). The first type, "for"-interval, corresponds to the Croatian impf. aspect, and the second, "in"-interval, corresponds to Croatian perf. aspect. Simply put, where in English there's a difference only in prepositions, in Croatian there's a difference in verbs used as well:
English Croatian past tense
(verb) "for" (interval)
(impf. verb) (interval)
(verb) "in" (interval)
(perf. verb) za (interval)
This is a simple way to distinguish which aspect to use in Croatian!
Let's focus on "for"-intervals (corresponding to impf. Croatian verbs + interval): how to tell how long you worked for a company or lived somewhere? Like this:
Radio säm jednu(A) godinu(A). "I worked for one year."
The phrase for time is in acc. if it's a definite duration, or ins. pl. if it's an indefinite duration (just "years"). Since in phrase jedna godina both words are free to change case, both words do: jednu godinu. In phrase pet godina the word godina is permanently in gen. pl., and pet looks the same in all cases:
Radio säm pet godina. "I worked for five years."
Complicated, but OK. However, now the tricky part!
Time phrases involving definite intervals must be in acc. and must contain at least two words.
For intervals longer than one day, instead of jedän/jednu X, one can use X dana, where X (= tjëdan, mjësec, godina) is taken as a 'measure'.
Instead of jedän sat "one hour", one can use sat vrëmena.
What?! Does it mean that you cannot say just radio säm godinu? No, you cannot. You must tell how many years. But you can tell also:
Radio säm godinu(A) dana(G pl.). "I worked for a year." (lit. "a year of days")
Radio säm jedän(A) mjësec(A). "I worked for a month."
Radio säm mjësec(A) dana(G pl.). "I worked for a month." (lit. "a month of days")
Radio säm jedän(A) tjëdän(A). "I worked for a week."
Radio säm tjëdän(A) dana(G pl.). "I worked for a week." (lit. "a week of days")
Now, dana is here in gen. pl. — godina, mjësec and tjëdän are understood as measures! They 'lock' dana in gen. pl., and themselves are of course in acc.
For dan "day", you should use always a number in front of it (when specifying time intervals):
Radio säm jedän(A) dan(A). "I worked for a day."
Radio säm dva(A) dana(du.). "I worked for two days."
This applies to sat "hour" as well, but one uses vrijëme n "time" as a second word in the construct if needed. Beware, this noun has a kind of strange declension: its gen. sg. is vrëmena (check 53 Strange Nouns and Collectives for more details):
Radio säm jedän(A) sat(A). "I worked for an hour."
Radio säm dva(A) sata(du.). "I worked for two hours."
Radio säm sat(A) vrëmena(G pl.). "I worked for an hour."
However, this weird rule does not apply to minuta "minute" and sekunda "second". They can be used freely.
Radio säm jednu(A) minutu(A). "I worked for a minute."
Radio säm dvijë(A) minute(du.). "I worked for two minutes."
Radio säm minutu(A). (!) "I worked for a minute."
(In Serbian, and often in Bosnia, instead of minuta and sekunda, minut mi and sekund mi are mostly used. Everything else said here still holds.)
One can also use words like cijëli "whole", pola "half" (the latter is an adverb, so it does not change case!):
Radio säm cijëlu(A) godinu(A). "I worked for a whole year."
Radio säm pola mjëseca(G). "I worked for half a month."
Radio säm cijëli(A) dan(A). "I worked for the whole day."
Radio säm cijelu(A) noć(A). "I worked for the whole night."
Now, the same applies to perf. verbs as well, but now we must use za in front of the time interval; in English, we use "in":
Naučio sam engleski za tri godine. "I learned English in three years."
Pripremio sam ručak za sat vrëmena. "I prepared the lunch in an hour."
This indicates how long it took to accomplish goals; compare it with the same sentences using impf. verbs where the outcome is completely unclear, it just certain that some time and effort were spent:
Učio sam engleski tri godine. "I learned English for three years."
Pripremao sam ručak sat vrëmena. "I was preparing lunch for an hour."
Likely, the outcome was not that good, otherwise you would use perf. verbs...
The above sentences mean that you don't work (live, study...) anymore, that the whole thing was in the past. But what if you want to say that it still goes on? Here Croatian and English differ, English has a special tense for it, but Croatian always uses the present tense for actions that still go on:
English Croatian present perfect tense
(verb) "for" (interval)
(impf. verb) (interval)
For example (I will not indicate cases, since they follow exactly the same rule as past intervals; the only difference is the verb tense):
Radim jednu godinu. "I have worked for a year."
Radim tjëdän dana. "I have worked for a week."
Radim pola mjëseca. "I have worked for half a month."
This is a major difference in tense use between English and Croatian.
The time intervals above were more or less accurate. How to tell that you worked "for years"? It turns out to be very simple, just use the appropriate noun (e.g. godina, sat) in instrumental plural:
Radio säm godinama. "I worked for years."
Radio säm danima. "I worked for days."
Radio säm satima. "I worked for hours."
There's no complication with mandatory two words! The complication applies for definite intervals only. Ongoing indefinite intervals are also quite simple, just use the present tense (as with definite intervals):
Radim godinama. "I have worked for years."
Radim danima. "I have worked for days."
Ne spavam noćima. "I haven't slept for nights."
Situating Events Within an Interval
Behind this complicated heading is a simple question: how do you say "I didn't sleep last night"? Here the idea is not how long you were unable to sleep, but when it happened, which night. Now you can (and usually do) use the genitive case for time expression:
Nisam spavao prošle(G) noći(G). "I didn't sleep last night."
Perf. verbs are used in the same manner:
Otišäo säm prošle(G) noći(G). "I left last night."
This is also seen in often-used expressions such as:
Jednog dana ću.... "One day I will..."
You are not telling here how long it will take (one day?) but when it will happen: on some indefinite day, here jedän simply implies indefiniteness! The difference is more striking in English: with intervals, you use "for", with situating events, you don't!
Less often, acc. is used also in this role: jedän dan ću....
These are names of days in the week in Croatian:
"Monday" ponedjëljäk "Friday" petäk "Tuesday" utoräk "Saturday" subota "Wednesday" srijëda "Sunday" nedjëljä "Thursday" četvrtäk "weekend" vikend
The names are nouns and normally change case; they are never capitalized (except they are the first word in a sentence) and the week starts on Monday. Saturday and Sunday are known as vikend "weekend".
The instrumental case of weekdays is used with meaning "on Sundays" etc.:
Nedjëljom igramo nogomet. "We play football on Sundays."
If you want to tell when something happened/will happen on some exact day of week, use u + dat (like any precise time):
U nedjëlju igramo nogomet. "We will play football on Sunday."
U nedjëlju smo igrali nogomet. "We played football on Sunday."
Special Words for Telling When
There are special words to tell when something occurred: in English, we have "yesterday" for instance. There are also special words for "this day" = "today". There are also adjectives like "daily" and "today's" (although English uses just "today" as an adjective). The deal is that Croatian has a lot more special words like those:
"day" dan danju dnevni dänäs "night" noć f noću noćni noćas "morning" jutro ujutro jutarnji jutros "noon" podne u podne podnevni — "afternoon" popodne popodne popodnevni — "evening" večer f navečer večernji večeras "midnight" ponoć f u ponoć ponoćni — "winter" zima zimi zimski zimus "spring" proljëće u proljëće proljëtni proljëtos "summer" ljëto ljëti ljëtni ljëtos "fall" jesen f najesen jesenji jesenas
Therefore, noću means "at night". Words like noćas mean "this night", but they are not completely precise: it could be the last night or the next night. Words ending on -s (dänäs, jutros, noćas, zimus) are a short way to tell "this day, morning, night, winter etc". Such words are really frequently used, except for seasons (you will not often hear zimus). Also there are words to indicate "during (any) X": ujutro, zimi, danju, etc.:
Zimi je hladno. "It's cold during winter."
Ljëti nëma posla. "There's no work in summer."
Ujutro se brijem. "I shave (myself) in (the) morning."
To make adjectives like "today's", change the final -s to -šnji:
dänäs → dänäšnji "today's"
noćas → noćašnji "tonight's"
jutros → jutrošnji, etc.
e.g. dänäšnje vijësti "today's news"
However, I never heard zimušnji, and words derived from other seasons (ljëtošnji, etc.) are really used rarely. There are five special words relating to now:
period adverb adjective "last year" lani (!) prošlogodišnji "last night" sinoć sinoćnji "yesterday" jučer jučerašnji "tomorrow" sutra sutrašnji "day before yesterday" prëkjučer prëkjučerašnji "day after tomorrow" prëksutra prëksutrašnji
Other periods of time allow also forming of adjectives (like "year"-"yearly") and special adjectives ("this year's"), but using a different pattern (ovo-):
period noun adjective "this" adjective "week" tjëdän tjëdni ovotjëdni "month" mjësec mjësečni ovomjësečni "year" godina godišnji ovogodišnji "century" stoljëće stoljëtni —
Time Until Future Events
If you are trying to tell when will something happen in the future, in relation to now, you should use present (or future) of a verb + za + time phrase in acc. The time-phrase rule restriction still applies, the za does not count! (There's nothing special about cases here, the same rules as for past/ongoing intervals apply.)
Vraćam se za jedän sat. "I'm coming back in an hour."
Odlazim za tjëdän dana. "I'm leaving in a week."
Odlazim za tri tjëdna. "I'm leaving in three weeks."
Odlazim za dva mjëseca. "I'm leaving in two months."
Vraćam se za sat vrëmena. "I'm coming back in an hour."
Take a note that I have used impf. verbs in the present tense: with za, it actually means future. Also note that the Present Continuous tense is used in English in such statements about the fixed and certain actions in future: again we see Continuous = impf:
English Croatian present continuous tense
(verb) "in" (interval)
(impf. verb) za (interval)
(verb) "in" (interval)
(verb) za (interval)
If you want to use perf. verbs, you must use the future tense:
Vratit ću se za jedän sat. "I'll come back in an hour."
Vratit ću se za sat vrëmena. (the same meaning)
Otići ću za tjëdän dana. "I'll leave in a week."
With the verb säm, bio, you can use both present and future to indicate future events:
U Zagrebu säm za tri dana. "I'm in Zagreb in three days."
Bit ću u Zagrebu za tri dana. "I'll be in Zagreb in three days."
Time Since Past Events ("ago")
If you are trying to tell when something did happen in the past, in relation to now, it's a bit more complicated: you should use past + prijë, and a normal time phrase in acc., except when the phrase starts with an adjective, such as jedän/jedna: then the phrase moves to the genitive case. The time-phrase rule complication still applies, so the prijë does not count!
Otišla säm prijë tjëdän dana. "I left a week ago."
Otišla säm prijë tri tjëdna. "I left three weeks ago."
Otišla säm prijë dva mjëseca. "I left two months ago."
Vratio säm se prijë sat vrëmena. "I came back an hour ago."
Bila säm u Zagrebu prijë dva mjëseca. "I was in Zagreb two months ago."
However, if you use jedän, the whole time phrase shifts to gen. after prijë, since jedän is an adjective:
Vratio säm se prijë jednog(G) sata(G). "I came back an hour ago."
Another example to illustrate how prijë works before adjectives:
Otišla säm prijë ove(G) zime(G). "I left before this winter."
This is normal and expected behavior of prijë: it uses gen. by default. Its use with time intervals is actually exceptional...
Yes, I admit this is quite complex.
Adverbs of expectation (već, još and tek) can be inserted before a duration, with meaning that something lasted more or less than expected:
Radim već jednu godinu. "I have worked already for a year."
Radim već tjëdän dana. "I have already worked for a week."
Radim već godinama. "I have worked already for years."
Radim tek jednu godinu. "I have worked only for a year."
Radim tek tjëdän dana. "I have worked only for a week."
This looks very different from the first use, but is again very similar to English. Some books advise using već for any ongoing interval, but it really means "already". It's not a translation of English present perfect tense!
The word još is used to indicate how much an ongoing action should last in future:
Radit ću još jednu godinu. "I'll work for one year more." (implies you are already working!)
Next, još and već can be inserted before a phrase that indicates moment when something happened/will happen (either absolute, or in relation to now) to indicate it's sooner than expected; I feel that it's a bit better to use već in this role:
Došla säm već u šest ujutro. "I arrived already at 6 am."
Došla säm još u šest ujutro. "I arrived already at 6 am."
Otišla säm već prijë dva mjëseca. "I already left two months ago."
Otići ću već za dva mjëseca. "I'll leave in just two months."
The word tek means exactly the opposite, as expected:
Došla säm tek u šest ujutro. "I arrived only at 6 am."
Otišla säm tek prijë dva mjëseca. "I left just two months ago."
Otići ću tek za dva mjëseca. "I'll leave in two months, not earlier." (unlike English!)
You see how these words are versatile, not so different e.g. from English "already", but the logic is a bit different.
Beware, još has more uses.
Updated 2014-10-04 (v. 0.4)