This pair causes trouble because many languages express both ideas with a single tense. English separates them, and the separation is about whether the past period is finished.
Past simple: finished time
Use it when the time period is over.
- "I visited Delhi last year." (last year is finished)
- "She called at nine." (nine has passed)
- "We finished the project in March."
Present perfect: unfinished connection
Use it when the past event still matters now, or the period is still open.
- "I have visited Delhi." (at some point in my life, which is ongoing)
- "She has called three times today." (today is not over)
- "We have finished the project." (and so it is now done)
The time words give it away
| Past simple | yesterday, last week, in 2019, ago, when I was young |
| Present perfect | ever, never, already, yet, since, so far, recently |
The classic mistake
"I have visited Delhi last year" mixes them. Last year is finished time, so it demands the past simple. Either say "I visited Delhi last year" or "I have visited Delhi."
Since and for
- since + a starting point: "since 2019", "since Monday"
- for + a length: "for three years", "for two days"
"I have worked here for five years" or "since 2021" — both present perfect, because you still work here.
Ask yourself: is that time period closed? Closed takes the past simple. Still open takes the present perfect.