I have found on Wikipedia that you can't use specific time in past for present perfect tenses, e.g.

  • I have done it on last monday.
  • I have done it yesterday.

But, I wonder why are we allowed to say:

  • I have done it before.
  • I have done it in the past.

My speculation is that we can not put a specific time in a present perfect tense, but we can put time intervals. Like I have done it for ten years(interval of time). Similarly before and in the past are intervals of time, not points in time. Hence, the following should be incorrect:

  • I have eaten two hours ago.
  • I have done that a couple of minutes ago.
  • I have done that long time ago.

Please give the grammatical reason for this and provide official/canonical references to back up your claim.

1 Answer 1


Why questions about language are usually pointless: the answer is "because that is how the language is".

But I'll attempt an explanation nonetheless.

The perfect is used when we want to present the activity as having relevance to the present. Sometimes that relevance is about the result of the activity; other times it is because the activity is represented as continuing to the present, or in a period that is thought of as continuing to the present.

When you use a specific time in the past, that time cannot include the present. It doesn't make any difference how long or short the time is: last year or last Tuesday, or at 15:35 last Tuesday.

When you use a phrase like before or in the past, that is a period which can be regarded as extending up to the present (even "in the past" does that), so the perfect is possible.

Some periods can be either, with different meanings:

I haven't seen him today.

presents the time as continuing to now, so implies that there is still a possibility of seeing him.

I didn't see him today.

presents the time during which I might have seen him as finished, so implies that there is now no possibility of seeing him today.

Of your final three examples: they are not idiomatic for the same reason.

Note, however, that they become possible with a comma, making the time an afterthought:

I have done that, a long time ago.

This suggests that when I said "I have done that", I was thinking of it just "sometime in the past"; but I then qualified it with "a long time ago".


You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .