Learn English – Didn’t vs Haven’t with time periods

differencepast-simplepresent-perfect

I know the basic rule that we use haven't to speak about something that started in the past and is still on-going in the present. We use didn't to speak something that was in the past.

But with time periods is didn't also possible and correct? Are they different?

  • I haven't seen him for five years.
  • I didn't see him for five years.

And:

  • I haven't played since two days ago.
  • I didn't play since two days ago.

Best Answer

An excellent question! Yes, you can use didn't with time periods, and yes, they do mean different things. I think the key thing to remember is that I have(n't) is a present tense, while I did(n't) is a past tense.

I haven't seen him for five years: As of right now, I have not seen him at any time during the past five years.

I didn't see him for five years: There was a period of five years, entirely in the past, during which I did not see him. This implies that I did see him again at the end of the five years.


The phrase with since is a little different, because since implies an effect that begins at one point in time and continues until another point in time, and ago means "before the present time".

I haven't played since two days ago: Two days before today I played, but I have not played in the span of time since then.

I didn't play since two days ago: This one is not correct - remember, didn't is a past tense, but "ago" means that we're talking about something leading up to the present. If you're talking about "time leading up to the present", then the correct way to phrase is is "I haven't played", which is your first example. If you mean "at some time in the past", then the correct way to phrase it would be "I hadn't played since two days before."

Apparently some grammar references say that "since...ago" is not correct, but there's a lot of argument about it, and it sounds OK to this US English speaker. A slightly more natural way to phrase it would be "I haven't played for two days", but "since...ago" doesn't sound wrong to me.

Related Topic