In Español peninsular, we use two different tenses to talk about past events that usually translate to the same tense in English: El Pretérito Perfecto and El Pretérito Indefinido. The choice of tense depends on when the action happened.
Fortunately, the rules are simple once you understand how we think about units of time: days, weeks, months and years.
Let's see what the problem is - in English, we would use I went for all of these cases:
I went to the doctor yesterday.
I went to the doctor this week.
I went to the doctor last week.
I went to the doctor this month.
In Español peninsular, however, we must choose either He ido or Fui according to when the action occurred relative to the "unit of time" referred to or implied (day, week, month, year):
Fui al médico ayer.
He ido al médico esta semana.
Fui al médico la semana pasada.
He ido al médico este mes.
Confused? It's easier than it seems. It simply depends on whether the speaker is "still inside" the "unit of time" that's being used or implied:
Use the present perfect ("he ido") form when talking about:
- today, this week, this month, or this year
Use the indefinido ("fui") form when talking about:
- yesterday, last week, last month, or last year (or further back)
If we're expressing ourselves in blocks of days then "Yesterday" is in the past relative to today and therefore requires "fui". If we're talking about exactly the same event but using the time block "this week" then that is still current, the event and the speaker are in the same time block, so the speaker uses "He ido". Easy!
Attention: the smallest block of time is one day in this respect. Morning, afternoon, evening and night do not count as 'time blocks' for this purpose. If it's the afternoon, you will still use He ido to say I went somewhere that the morning.
You might think this concept of time blocks determining choice of tense is strange at first, but in fact, in English we use the present perfect with the very same time blocks (albeit with a different nuance, e.g. to introduce a new fact or express a sense of continued action).
These sentences sound right:
I’ve been to the doctor this week/month/year… (twice/four times!)
But these sound strange:
I’ve been to the doctor last week/month/year…
They feel very strange because the time block is over. Spanish is the same: don't use the present perfect to talk about events in previous blocks of time. Use the simple past instead.
In Español peninsular, you should use the present perfect for past events occurring in the current time block. However, Spanish American speakers use the simple past for both cases.
Caution: novices in both languages mistakenly translate El Pretérito Perfecto into/from the English present perfect because they share the same form:
“I have [past participle] ” is structurally the same as “(Yo) he + [past participle]”
While there are instances where this will work, in general this is a mistake and the English preterite is the appropriate choice.
Interestingly, the name of the Spanish present perfect verb is el preterito (from the Latin for 'past') perfecto (perfect), unlike the English “present perfect”, even though haber is conjugated in the present tense, just like have is in English. Perhaps this reflects the fact that the tense carries a greater nuance of something past, whereas in English, we tend to use it for past events with continuing relevance in the present. (Note: The name of the true Spanish past perfect is el pasado perfecto.)