European Spanish (Español peninsular) uses two different tenses to talk about past events in cases where in English we generally use one. Knowing whether to use El Pretérito Perfecto ("he ido") or El Pretérito Indefinido ("fui") can be tricky at first but it's actually pretty easy.
The rules are simple once you understand how we think about units of time: days, weeks, months and years.
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 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):
How to know when to use El Pretérito Perfecto or El Pretérito Indefinido
The choice of tense 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 the past:
- today, this week, this month, or this year
Use the indefinido ("fui") form when talking about the past:
- 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 because 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 when considering which tense to use.
Morning, afternoon, evening and night do not count as 'time blocks' for this purpose. If it's now the afternoon, you will still use He ido to say I went somewhere in the morning.
Note: If you talk about time ago using hace then the tense will still depend on whether the event in question was 'today' or another day:
Lo he visto hace 2 minutos.
I saw him two minutes ago.
Lo vi hace 3 días.
I saw him 3 days ago.
English is not so different
You might think this concept of time blocks determining choice of tense is strange at first, but in fact, in English we use the perfect tense 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.
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.
Examples and resources
María José from AIL Madrid explains 'marcadores temporales con pretérito "indefinido" y "perfecto"'. (By the way, AIL is an excellent school and highly recommended if you want to learn Spanish in Madrid!)