In general, the present perfect should not be used with time phrases.  However, there is one sentence structure where it is appropriate to use time words and phrases with the present perfect: talking about an experience that happened within a time period that connects to the present.

What are time phrases that connect to the present?

Now, the explanation above may sound confusing.  Let’s break it down.  First, what is a time phrase that connect to the present?  Here are some examples:

  • Today
  • Recently
  • This month
  • This year
  • Since [some starting point]

Basically, a “time period that connects to the present” means any time that started in the past and continues to the present moment.  Therefore, you can use the present perfect to make sentences like these:

  • I have had three cups of coffee today.
  • I haven’t eaten since yesterday.
  • Have you visited London this year?
  • We haven’t seen each other recently.

In these cases, it is understood that I have had more than three cups of coffee in my life, I have eaten before yesterday, you have probably visited London before this year, and we have seen each other at some point in the past.  Compare these examples:

  • Have you visited London? = Have you visited London [in your life]?
  • Have you visited London this year? = You have probably visited London before, but have you visited there this year?

Compare with the Simple Past

You could also replace these kinds of present perfect sentences with simple past sentences, and the basic meaning is exactly the same.  However, the present perfect sentence place subtle emphasis on the experience, while simple past sentences emphasize the time.  Compare:

  • Have you visited London this year?
  • Did you visit London this year?

The meaning of these sentences is identical.  But a native speaker will feel a small emphasis on the time period in the simple past example.

More Examples

Here are some more examples of correct ways to use the present perfect with time phrases and incorrect ways to avoid.

Correct:

  • I have eaten pizza three times this week!
  • Have you checked your email since this morning?
  • He hasn’t done his homework all week.
  • Has she taken any vacations this year?
  • Have you seen the boss this afternoon?

Incorrect:

  • I have eaten pizza three times last week!
  • He hasn’t done his homework yesterday.
  • Has she taken any vacations last year?
  • Have you seen the boss a week ago?