Imagine you’re meeting a friend in the evening, and you want to ask if they had dinner. Should you say “Have you eaten dinner?” or “Did you eat dinner?”? The answer depends on whether dinner time is still ongoing or if it has completely passed.
This distinction might seem small, but it plays a crucial role in everyday communication. Using the wrong tense can sometimes lead to confusion or make your speech sound unnatural.
Both of these questions refer to past actions, but the choice between “Have you eaten dinner?” and “Did you eat dinner?” depends on the time frame and its relevance to the present moment. Let’s break down the key differences to help you understand when to use each one correctly.

Present Perfect vs. Past Simple
- “Have you” is in the present perfect tense.
- “Did you” is in the past simple tense.
Even if you know these grammar terms, you might still wonder how they actually affect meaning in everyday conversation. Let’s explore how these tenses function.
Understanding Past Simple (Did You)
The past simple tense is used for actions that happened at a specific time in the past and are completely finished. Importantly, the time period is also finished.
Examples of Finished Time Periods:
- Two hours ago
- Yesterday
- Last week
- Last month
If an action happened during one of these completed time periods, we must use past simple:
✅ Did you practice speaking English this afternoon?
(“This afternoon” is over, so we use past simple.)
Understanding Present Perfect (Have You)
The present perfect tense is used when the time period is still continuing or not specified.
Examples of Ongoing Time Periods:
- Today
- This week
- This month
- This year
If we ask about an action during one of these ongoing time periods, we use present perfect:
✅ Have you practiced speaking English today?
(“Today” is not finished, so present perfect is more natural.)
Do We Always Follow This Rule?
Not always. In informal conversations, people sometimes use past simple even when the time period is still ongoing. However, one rule is always followed:
❌ I have seen him yesterday. (Incorrect)
❌ I have been to Japan last year. (Incorrect)
Since “yesterday” and “last year” are 100% in the past, we must use past simple:
✅ I saw him yesterday.
✅ I went to Japan last year.
Answering the Main Question: Which One Should You Use?
When choosing between “Have you eaten dinner?” and “Did you eat dinner?”, ask yourself:
- Is dinner time still ongoing? → Use present perfect
- Is dinner time 100% in the past? → Use past simple
Example Scenarios:
- It’s still dinner time (ongoing period).
✅ Have you eaten dinner? - Dinner time is completely over.
✅ Did you eat dinner?
In most cases:
- “Have you eaten dinner?” is used when referring to today’s dinner.
- “Did you eat dinner?” is used for any dinner before today.
Present Perfect and Its Connection to the Present
The present perfect tense often highlights past actions that affect the present.
For example:
✅ Have you given him the report? (Meaning: Does he have it right now?)
Similarly:
✅ Have you eaten dinner? (Meaning: Do you have food in your stomach right now?)
This question implies concern about the person’s current state, which could be important if you’re planning to invite them for dinner or cook something for them.
On the other hand:
✅ Did you eat dinner? simply asks about a past event without focusing on the present moment.
Explore More:
Difference Between I have had and I had had
Understanding and Fixing Sentence Fragments