Đây là điểm ngữ pháp mà người học tiếng Anh ở Việt Nam sai nhiều nhất ở trình độ trung cấp, và lý do là cách nó thường được dạy: "hiện tại hoàn thành dùng cho việc xảy ra trong quá khứ nhưng còn liên quan đến hiện tại". Câu đó đúng nhưng mơ hồ, và không giúp gì lúc đang nói.
Có một cách nghĩ cụ thể hơn nhiều.
Câu hỏi: khoảng thời gian đã đóng chưa

Mỗi câu nói về quá khứ đều ngầm chứa một khoảng thời gian. Câu hỏi là khoảng đó đã kết thúc hay còn kéo dài tới bây giờ.
Đã đóng → quá khứ đơn Còn mở, kéo tới hiện tại → hiện tại hoàn thành
I saw him yesterday. — hôm qua đã hết → quá khứ đơn I have seen him today. — hôm nay chưa hết → hiện tại hoàn thành
Cùng một hành động, cùng khoảng cách thời gian, nhưng khoảng thời gian được nhắc tới khác nhau.
Ví dụ rõ hơn:
He wrote three books. — ông ấy đã mất, đời ông đã đóng He has written three books. — ông ấy còn sống, còn có thể viết thêm
Đây là lý do vì sao câu thứ hai nghe kỳ nếu nói về một người đã qua đời — và đó là một trong những kiểm tra nhanh hữu ích nhất.
Trạng từ chỉ ra khoảng đóng hay mở
Cách nhanh nhất trong thực tế là nhìn trạng từ thời gian.
Bắt buộc quá khứ đơn (khoảng đã đóng):
yesterday · last week · in 2020 · two days ago · when I was young · then
Bắt buộc hiện tại hoàn thành (khoảng còn mở hoặc không xác định):
ever · never · already · yet · so far · recently · lately · up to now this week · this year · today (nếu chưa hết)
Đây là lỗi kinh điển:
I have seen him yesterday.✗ I saw him yesterday. ✓
yesterday là một khoảng đã đóng. Không có ngoại lệ.
for và since

Cả hai đi với hiện tại hoàn thành, và khác nhau ở cái chúng đo:
for + khoảng thời gian dài bao lâu
for three years · for two hours · for a long time · for ages
since + thời điểm bắt đầu
since 2020 · since Monday · since I was a child · since this morning
I have lived here for five years. I have lived here since 2021.
Hai câu này có thể nói cùng một điều theo hai cách đo khác nhau.
Chú ý: since cũng dùng được với cả một mệnh đề:
I haven't seen him since he moved away.
Bốn nhóm dùng chính
1 — Kinh nghiệm, không nói thời điểm.
Have you ever been to Japan? I**'ve never eaten** durian.
2 — Việc chưa xong hoặc còn có thể thay đổi.
I haven't finished the report yet. She has already left.
3 — Trạng thái kéo dài từ quá khứ tới giờ.
We have known each other for ten years. He has worked here since 2019.
4 — Kết quả còn thấy được ở hiện tại.
I**'ve lost** my keys. — và giờ vẫn chưa tìm thấy She**'s broken** her arm. — và tay vẫn đang bó
Nhóm 4 là chỗ ranh giới mờ nhất, và cũng là chỗ tiếng Anh Mỹ hay dùng quá khứ đơn thay:
I lost my keys. — người Mỹ nói câu này rất bình thường
Tiếng Anh Mỹ và tiếng Anh Anh
Cần biết để không hoang mang khi nghe:
Anh: Have you eaten yet? · I've just arrived. Mỹ: Did you eat yet? · I just arrived.
Người Mỹ dùng quá khứ đơn ở nhiều chỗ mà người Anh dùng hiện tại hoàn thành, đặc biệt với just, already, yet.
Trong bài thi quốc tế thì theo chuẩn Anh cho an toàn.
Lỗi phổ biến nhất của người Việt
Dùng hiện tại hoàn thành với thời điểm cụ thể — đã nói ở trên.
Dùng hiện tại đơn cho trạng thái kéo dài:
I live here for five years.✗ I have lived here for five years. ✓
Tiếng Việt nói "Tôi sống ở đây năm năm rồi" bằng thì hiện tại, nên đây là lỗi dịch trực tiếp.
Nhầm have been và have gone:
He has been to Paris. — đã đi và đã về He has gone to Paris. — đang ở đó, chưa về
Một câu kiểm nhanh
Trước khi chọn, hỏi: "khoảng thời gian tôi đang nói tới có bao gồm lúc này không?"
Có → hiện tại hoàn thành. Không → quá khứ đơn.
