This is the tense most learners get wrong for longest, because many languages have a form that looks identical and is used differently.
The present perfect is a present tense. It is about the situation now. The past simple is about a finished moment then.
The form
have / has plus the past participle.
```
I have finished.
She has gone.
They have not arrived.
Have you seen it?
```
Three uses
1. Life experience, with no specific time.
```
I have been to Japan. (at some point in my life)
She has never eaten sushi.
Have you ever driven a truck?
```
2. Something that started in the past and is still true.
```
I have lived here for ten years. (and I still live here)
She has worked here since 2019. (and she still works here)
```
3. A past action with a result that matters now.
```
I have lost my keys. (so I cannot get in, right now)
He has broken his leg. (so he cannot walk, right now)
```
The rule that decides it
A finished time expression forces the past simple.
```
✓ I have been to Japan.
✗ I have been to Japan last year.
✓ I went to Japan last year.
```
Last year, yesterday, in 2019, two days ago, when I was a child are all finished. They cannot take the present perfect.
Compare:
```
I have lost my keys. (they are still lost)
I lost my keys yesterday. (a finished event; maybe I found them)
```
for and since
for plus a length of time. since plus a starting point.
```
for two years, for a long time, for ten minutes
since 2019, since Monday, since I was ten, since this morning
```
been and gone
```
She has been to Paris. (she went and came back)
She has gone to Paris. (she is there now)
```
already, yet, just, still
- already: sooner than expected. I have already finished.
- yet: in questions and negatives, at the end. Have you finished yet? I haven't finished yet.
- just: a moment ago. I have just arrived.
- still: continuing, and often with impatience. I still haven't heard back.
Present perfect continuous
have been plus -ing. It emphasises the activity and its duration rather than the result.
```
I have been waiting for an hour. (the waiting is the point)
I have written three emails. (the result is the point)
```
State verbs stay in the simple form here too:
```
✗ I have been knowing her for years.
✓ I have known her for years.
```