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 today.
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):
He ido al médico esta semana.
Fui al médico la semana pasada.
He ido al médico este mes.
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; i.e., to introduce a new fact or express a sense of continued action).
These sentences sound right:
I’ve been to the doctor today… (and she said…)
I’ve been to the doctor this week/month/year… (twice/four times!)
But these sound strange:
I’ve been to the doctor yesterday.
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.
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
Previous time block: use El Pretérito Indefinido
El año pasado estudié economía.Last year I studied Economics. El 5 de agosto fue su cumpleaños.It was his birthday on August 5th. Tú trabajaste en nuestra empresa en 2007.You worked in our company in 2007. Reservé la habitación hace dos días.I booked the room two days ago. Ellos eligieron el menú de la boda el viernes pasado.They chose the wedding menu last Friday. Quedamos con Javier el otro día.We met up with Javier the other day. Tú comiste muchos dulces ayer.You ate a lot of sweets yesterday. El verano pasado entrené mucho para la maratón.Last summer I trained a lot for the marathon.
Same time block: use El Pretérito Perfecto
He ido al médico este mes. Vosotros habéis viajado mucho este año.You travelled a lot this year. ¿Qué has desayunado esta mañana?What did you have for breakfast this morning? Hemos ido a pasear esta tarde.We went for a walk this afternoon. Ellas han salido tarde de trabajar hoy.They left late from work today. Fui al médico la semana pasada. He ido al médico esta semana. Ellas han dormido mucho esta semana.They slept a lot this week. Nosotros hemos planificado la estrategia en estos últimos días.We planned the strategy over the past few days. Ellos han estado muy enfermos en los últimos meses.They were ill over the last few months.