Since and for with the present perfect
Why English says I have lived here for five years where Ukrainian and Russian use the present tense, and how to choose between since, for and ago.
The problem
To say that something started in the past and is still true, Ukrainian and Russian use the present tense: Я живу тут п'ять років, Я живу здесь пять лет. The logic is simple: I live here now, and the time phrase tells you how long.
English sees the same situation differently. It looks back from now over the whole period, from the start until today, and that view needs the present perfect: I have lived here for five years. A present simple sentence such as I live here for five years is one of the most recognisable errors made by Ukrainian and Russian speakers. To an English ear it sounds wrong, as if the time phrase does not belong to the verb.
The second difficulty is the choice of word for the time phrase. Ukrainian and Russian often need no preposition at all (п'ять років, пять лет), or use з / с for a starting point. English needs either for or since, and they are not interchangeable.
How English does it
Use the present perfect (have + past participle) for a situation that began in the past and continues now. For an activity that is still going on, the present perfect continuous is common too: I have been learning English for three years.
| Word | Followed by | Question it answers | Example |
|---|---|---|---|
| for | a length of time | How long? | for ten minutes, for two weeks, for years, for a long time |
| since | a starting point | Since when? | since Monday, since 2019, since nine o'clock, since I was a child |
| ago | a length of time, then ago, with the past simple | When? | two years ago, a week ago |
For measures the period: for three days, for ages, for a while. Since names the moment the period began: since Tuesday, since the summer, since we met. A useful test: if you can put the phrase after how long, it takes for; if it answers from when, it takes since.
After since you can also use a clause in the past simple, because the starting point is a finished moment: I have known Anna since we were at school.
Ago belongs to a different tense. It counts back from now to one point in the past, and it goes with the past simple: I moved here five years ago. The two ideas fit together: I moved here five years ago, so I have lived here for five years.
The question form uses how long and the present perfect: How long have you lived here? Stative verbs such as know, be, have (possession) and like stay in the simple form: I have known him for years, not have been knowing.
British and American English agree here: both use the present perfect with since and for when the period runs up to now.
Examples
- I have lived in this city for six years.
- Anna has known Tom since they were children.
- He has worked at the bank since 2021.
- We have been waiting for forty minutes.
- It has been raining since the morning.
- How long have you been learning English?
- I haven't seen her for ages.
- Tom started his new job two months ago, so he has had it for two months.
Common mistakes
- ✗ I live in this flat since 2020.
✓ I have lived in this flat since 2020.
Живу з 2020 року / живу с 2020 года is present in Ukrainian and Russian, but English needs the present perfect when the period runs up to now. - ✗ I know him for ten years.
✓ I have known him for ten years.
The same rule applies to stative verbs. Know does not become continuous, but it still needs have known. - ✗ She has worked here since three years.
✓ She has worked here for three years.
Three years is a length of time, so it takes for. Since needs a starting point: since 2023. - ✗ How long are you in this country?
✓ How long have you been in this country?
How long are you…? asks about the future, meaning how long will you stay. For the time up to now, use have you been. - ✗ I have come here two years ago.
✓ I came here two years ago. / I have been here for two years.
Ago marks a finished moment in the past, so it always takes the past simple, never the present perfect.
Try it
- I ___ (know) Anna since 2015.
- They have lived here ___ ten years. (for / since)
- Tom has been ill ___ Monday. (for / since)
- We moved to this town three years ___. (ago / for)
- How long ___ you ___ (wait) for the bus?