Отличие использования haven't и didn't в английском языке заключается в следующем:
- Время. 1 Didn't употребляется в Past Simple (простое прошедшее время), а haven't — в Present Perfect (настоящее совершённое). 1
- Действие. 1 Глагол did (и его отрицательная форма) употребляется при указании на действие, совершаемое в прошлом без наличия точного результата. 1 Глаголы have и has употребляются при уже совершённом действии, при этом результат этого действия есть в настоящем времени. 1
- Вопрос. 1 Вопрос глаголов при didn't — «что не делал» (глаголы несовершенного вида), а при haven't, hasn't — «что не сделал» (глаголы совершенного вида). 1
Например, если сейчас 7 вечера, можно сказать «I didn't eat dinner at 6» или «I haven't eaten dinner yet today». 2 В обоих случаях можно ещё поужинать, но в первом случае это было в определённый момент времени, а во втором — за определённый период (день, месяц и т. д.). 2