luyennguphap.com
Cơ bản – Trung cấp

Thì hiện tại hoàn thành (Present perfect)

Thì hiện tại hoàn thành nối quá khứ với hiện tại: S + have/has + V3/ed. Bài này gồm công thức, cách dùng, since và for, already/yet/just, phân biệt với quá khứ đơn, hiện tại hoàn thành tiếp diễn và 10 bài tập có đáp án.

Bắt đầu luyện tập

Thì hiện tại hoàn thành là gì? Công thức

Thì hiện tại hoàn thành (present perfect) nói về một việc đã xảy ra trong quá khứ nhưng còn liên quan đến hiện tại: kết quả còn đó, trải nghiệm còn tính, hoặc tình trạng kéo dài đến bây giờ. Tiếng Việt thường dịch bằng "đã", "rồi", "từng", "chưa", nhưng điều quan trọng là người nói không quan tâm chính xác khi nào việc đó xảy ra.

Thì này gồm hai mảnh: have/has (chia theo chủ ngữ) và V3/ed (quá khứ phân từ).

  • have đi với I, you, we, they và danh từ số nhiều; has đi với he, she, it và danh từ số ít.
  • Viết tắt: I've, you've, we've, they've, he's, she's, it's. Cẩn thận: he's có thể là he is hoặc he has. Sau nó là V3 (he's gone) thì là has; là V-ing hoặc tính từ (he's going, he's tired) thì là is.
Dạng câuCông thứcVí dụ
Khẳng địnhS + have / has + V3/edI have finished. She has left.
Phủ địnhS + have / has + not + V3/edWe haven't eaten yet. He hasn't called.
Câu hỏi Yes/NoHave / Has + S + V3/ed …?Have you seen my keys?
Câu hỏi Wh-Wh- + have / has + S + V3/ed …?How long have you lived here?
Trả lời ngắnYes, S + have/has. / No, S + haven't/hasn't.Yes, I have. No, she hasn't.

Quá khứ phân từ (V3): có quy tắc và bất quy tắc

Động từ có quy tắc tạo V3 giống quá khứ đơn: thêm -ed (work → worked, study → studied, stop → stopped). Động từ bất quy tắc phải học thuộc; nhiều động từ có V2 và V3 khác nhau, và đây là nguồn lỗi lớn nhất của thì này.

  • get có V3 là got (Anh) và thường là gotten (Mỹ): Prices have got / have gotten higher. Riêng have got nghĩa sở hữu thì cả hai bên đều dùng got.
Nguyên mẫuQuá khứ đơn (V2)Quá khứ phân từ (V3)Nghĩa
bewas / werebeenthì, là, ở
gowentgoneđi
dodiddonelàm
seesawseennhìn thấy
eatateeatenăn
writewrotewrittenviết
taketooktakenlấy, mang
givegavegivencho
breakbrokebrokenlàm vỡ
forgetforgotforgottenquên
beginbeganbegunbắt đầu
buy / find / makebought / found / madebought / found / mademua / tìm thấy / làm

Các cách dùng chính của hiện tại hoàn thành

  • Kinh nghiệm, trải nghiệm tính đến nay (không nói lúc nào), hay đi với ever, never, before, once, twice, many times: I have visited Ha Long Bay twice.
  • Việc vừa xảy ra, có kết quả ở hiện tại: I've lost my wallet. (Giờ tôi không có ví.) Someone has broken the printer. (Giờ máy in hỏng.)
  • Tình trạng bắt đầu trong quá khứ, kéo dài đến hiện tại, thường đi với since / for / how long: She has worked here since 2019.
  • Tin tức, thông báo mới: The government has announced a new holiday. Khi kể chi tiết thì chuyển sang quá khứ đơn: It made the announcement this morning.
  • Khoảng thời gian chưa kết thúc: today, this week, this month, this year: I've drunk three cups of coffee today. (Hôm nay chưa hết.)
Ví dụ
  • Have you ever eaten durian?Bạn đã bao giờ ăn sầu riêng chưa?
  • Oh no, I've left my laptop at the café!Chết rồi, tôi để quên laptop ở quán cà phê!
  • Our company has opened three new branches this year.Năm nay công ty chúng tôi đã mở ba chi nhánh mới.
  • They've known each other since primary school.Họ quen nhau từ hồi tiểu học.

Since và for: hỏi "bao lâu" và "từ khi nào"

Khi một tình trạng kéo dài từ quá khứ đến bây giờ, dùng for + khoảng thời gian (bao lâu) hoặc since + mốc thời gian (từ lúc nào). Câu hỏi tương ứng là How long have you…?

S + have/has + V3 + since + S + V quá khứ đơnIt has been / It's + khoảng thời gian + since + S + V quá khứ đơn
  • Sau since có thể là một mệnh đề ở quá khứ đơn: We haven't met since we left school. (mệnh đề sau since ở quá khứ đơn, mệnh đề chính ở hiện tại hoàn thành).
  • It's five years since I last saw him. = I haven't seen him for five years. = The last time I saw him was five years ago. Ba câu này là dạng viết lại câu rất quen trong đề THPT.
  • ago không đi với hiện tại hoàn thành: không viết I have met him two days ago mà là I met him two days ago.
Đi vớiVí dụ
forkhoảng thời gian: two hours, three days, ten years, a long time, agesI've lived here for ten years.
sincemốc thời gian: 2015, Monday, last summer, 8 o'clock, I was a childI've lived here since 2015.
Ví dụ
  • How long have you been a teacher? – For about six years.Bạn làm giáo viên bao lâu rồi? – Khoảng sáu năm.
  • It has been two weeks since the system crashed.Đã hai tuần kể từ khi hệ thống bị sập.

Already, yet, just, still, ever, never: nghĩa và vị trí

  • yet dùng trong câu phủ định và câu hỏi; trong câu khẳng định dùng already. So sánh: Have you finished yet? (hỏi bình thường) và Have you finished already? (ngạc nhiên vì xong nhanh quá).
  • ever còn dùng sau so sánh nhất: This is the best pho I've ever eaten.
  • never đã mang nghĩa phủ định, không đi với haven't: không nói I haven't never seen.
TừNghĩaVị trí thường gặpVí dụ
justvừa mớigiữa have/has và V3I've just finished the report.
alreadyđã… rồi (sớm hơn mong đợi)giữa have/has và V3, hoặc cuối câuShe has already paid. / She's paid already.
yetchưa (phủ định), …chưa? (câu hỏi)cuối câu phủ định và câu hỏiI haven't replied yet. Have you replied yet?
stillvẫn chưa (nhấn mạnh, sốt ruột)trước haven't/hasn'tHe still hasn't called me.
everđã từng (câu hỏi)giữa chủ ngữ và V3Have you ever been to Japan?
neverchưa bao giờgiữa have/has và V3I've never seen snow.

Hiện tại hoàn thành hay quá khứ đơn?

Đây là điểm hay bị nhầm nhất. Câu hỏi then chốt: có mốc thời gian đã kết thúc không? Có (yesterday, last week, in 2020, ago, when I was young) → quá khứ đơn. Không nói lúc nào, hoặc khoảng thời gian còn kéo dài đến nay → hiện tại hoàn thành.

  • Câu hỏi When…? thường dùng quá khứ đơn vì đang hỏi thời điểm: When did you arrive? không phải When have you arrived?
  • Trong tiếng Anh Mỹ, văn nói thường dùng quá khứ đơn với just, already, yet: Did you eat yet? I just saw him. Trong tiếng Anh Anh và trong bài thi, nên dùng hiện tại hoàn thành: Have you eaten yet? I've just seen him.
Hiện tại hoàn thànhQuá khứ đơn
Không nêu thời điểm: I've seen that film.Có thời điểm cụ thể: I saw that film last Sunday.
Kéo dài đến nay: He has worked here for 5 years. (vẫn đang làm)Đã kết thúc: He worked here for 5 years. (giờ không làm nữa)
Khoảng thời gian chưa hết: I've had two meetings this morning. (còn buổi sáng)Khoảng thời gian đã hết: I had two meetings this morning. (giờ đã là buổi chiều)
Câu hỏi chung: Have you ever been to Hue?Hỏi chi tiết: When did you go there?

Been to và gone to

go có hai dạng V3 với nghĩa khác nhau ở thì hoàn thành. Đây là cặp bẫy quen thuộc trong đề trắc nghiệm.

  • have/has been to = đã đi và đã về (trải nghiệm): She has been to Korea three times. (Giờ cô ấy đang ở đây.)
  • have/has gone to = đã đi và chưa về, giờ đang ở đó hoặc đang trên đường: She has gone to Korea. (Giờ cô ấy không có ở đây.)
  • Vì vậy không nói I have gone to Korea khi đang đứng ở Việt Nam kể chuyện; câu đúng là I have been to Korea.
Ví dụ
  • Where's Nam? – He's gone to the post office. He'll be back in ten minutes.Nam đâu rồi? – Cậu ấy ra bưu điện rồi. Mười phút nữa về.
  • Have you ever been to a K-pop concert?Bạn đã bao giờ đi xem một buổi hoà nhạc K-pop chưa?

Hiện tại hoàn thành tiếp diễn: have been + V-ing

Thì hiện tại hoàn thành tiếp diễn (present perfect continuous) nhấn mạnh quá trình, sự liên tục của một hành động kéo dài từ quá khứ đến hiện tại, hoặc vừa dừng và còn để lại dấu vết.

S + have / has + been + V-ing
  • Dấu vết của hành động vừa dừng: Your eyes are red. Have you been crying? I'm sweaty because I've been running.
  • Động từ trạng thái (know, like, own, believe…) không dùng dạng tiếp diễn: I've known her for years. không phải I've been knowing.
  • Với live, work, study, teach, khi đi kèm for/since, dùng thể đơn hay thể tiếp diễn đều được và nghĩa gần như nhau: I've worked / I've been working here for two years.
Hiện tại hoàn thànhHiện tại hoàn thành tiếp diễn
Nhấn vào kết quả, số lượng: I've written three emails.Nhấn vào quá trình, thời lượng: I've been writing emails all morning.
Việc đã xong: She has painted the room. (phòng sơn xong)Việc có thể chưa xong: She has been painting the room. (có thể còn dở)
Trạng thái lâu dài, ổn định: They've lived here for years.Hoạt động gần đây, liên tục: They've been living here since March.

Cấu trúc hay ra thi với hiện tại hoàn thành

Cấu trúcVí dụ
It's / This is the first (second…) time + S + have/has + V3This is the first time I have driven a car.
So sánh nhất + S + have/has + ever + V3She is the kindest person I have ever met.
S + haven't/hasn't + V3 + for … = It's … since S last + V2I haven't seen him for a year. = It's a year since I last saw him.
S + began/started + V-ing + … ago = S + have/has + V3 + for …I started learning English five years ago. = I have learnt English for five years.
S + have/has + never + V3 + before = It's the first time …I've never flown before. = It's the first time I have flown.
Ví dụ
  • This is the third time you have asked me the same question.Đây là lần thứ ba bạn hỏi tôi cùng một câu.
  • It's the best decision our team has ever made.Đó là quyết định tốt nhất nhóm chúng tôi từng đưa ra.

Mẹo làm bài thi

  1. Có mốc thời gian đã kết thúc (yesterday, last…, ago, in 2020) → quá khứ đơn; có since / for (việc còn kéo dài đến nay) / so far / up to now / recently / ever / never / yet → hiện tại hoàn thành. Đây là cặp TOEIC Part 5 và THPT ra nhiều nhất.
  2. Sau since chọn mốc (2019, last May, I was ten), sau for chọn khoảng (two years, a long time). Nếu sau chỗ trống là mệnh đề thì since + quá khứ đơn.
  3. Đề viết lại câu THPT gần như năm nào cũng có cặp The last time I… was… ago ↔ I haven't… for… ↔ It's… since I last…. Học thuộc cả ba dạng.
  4. Thấy This is the first time… hoặc the best/most… I have ever… → chọn hiện tại hoàn thành. Nếu câu ở quá khứ (It was the first time…) thì chuyển sang quá khứ hoàn thành had V3.
  5. IELTS Speaking: dùng hiện tại hoàn thành để kể trải nghiệm (I've been to…, I've never tried…) rồi chuyển quá khứ đơn khi kể chi tiết (I went there in 2022 and…). Đổi thì đúng chỗ giúp điểm Grammatical Range.

Lỗi hay gặp

Sai: I have seen him yesterday.

Đúng: I saw him yesterday.

Có mốc thời gian đã kết thúc (yesterday) → quá khứ đơn, không dùng hiện tại hoàn thành.

Sai: She has went home.

Đúng: She has gone home.

Sau have/has là V3 (gone), không phải V2 (went).

Sai: I have lived here since five years.

Đúng: I have lived here for five years.

five years là khoảng thời gian → dùng for. since đi với mốc (since 2020).

Sai: When have you arrived?

Đúng: When did you arrive?

Câu hỏi When hỏi thời điểm cụ thể → quá khứ đơn.

Sai: I have already finished my homework yet.

Đúng: I have already finished my homework. / I haven't finished my homework yet.

yet dùng trong câu phủ định và câu hỏi; câu khẳng định dùng already.

Sai: I have been knowing her for ten years.

Đúng: I have known her for ten years.

know là động từ trạng thái, không dùng thể tiếp diễn.

Bài tập có đáp án

  1. 1.I _____ this film three times so far. It's my favourite.

    1. A. see
    2. B. saw
    3. C. am seeing
    4. D. have seen
    Xem đáp án và giải thích

    Đáp án: D. have seen

    so far (tính đến giờ) + số lần trải nghiệm → hiện tại hoàn thành have seen.

  2. 2.She has worked for this company _____ 2019.

    1. A. for
    2. B. since
    3. C. in
    4. D. ago
    Xem đáp án và giải thích

    Đáp án: B. since

    2019 là mốc thời gian → since. for đi với khoảng thời gian; in 2019 và ago dùng với quá khứ đơn.

  3. 3.We have lived in Da Nang _____ ten years.

    1. A. since
    2. B. ago
    3. C. for
    4. D. in
    Xem đáp án và giải thích

    Đáp án: C. for

    ten years là khoảng thời gian → for.

  4. 4._____ Minh and Lan finished their presentation yet?

    1. A. Have
    2. B. Has
    3. C. Are
    4. D. Were
    Xem đáp án và giải thích

    Đáp án: A. Have

    yet + câu hỏi → hiện tại hoàn thành. Chủ ngữ Minh and Lan số nhiều → Have.

  5. 5.I _____ Mr Tuan at the conference last week.

    1. A. have met
    2. B. meet
    3. C. met
    4. D. have been meeting
    Xem đáp án và giải thích

    Đáp án: C. met

    last week là mốc thời gian đã kết thúc → quá khứ đơn met. Hiện tại hoàn thành không đi với last week.

  6. 6."Where's Nam?" – "He _____ to the bank. He'll be back in a few minutes."

    1. A. has been
    2. B. have gone
    3. C. goes
    4. D. has gone
    Xem đáp án và giải thích

    Đáp án: D. has gone

    Nam đi và chưa về (đang ở ngân hàng) → has gone to. has been to nghĩa là đã đi và đã về, không hợp. have sai vì chủ ngữ he.

  7. 7.It's the first time I _____ sushi. It's delicious!

    1. A. have eaten
    2. B. eat
    3. C. ate
    4. D. had eaten
    Xem đáp án và giải thích

    Đáp án: A. have eaten

    Cấu trúc It's the first time + S + have/has + V3 → have eaten. had eaten chỉ dùng khi câu ở quá khứ (It was the first time…).

  8. 8.I haven't talked to my old classmates _____ we graduated.

    1. A. for
    2. B. since
    3. C. when
    4. D. ago
    Xem đáp án và giải thích

    Đáp án: B. since

    Sau chỗ trống là mệnh đề quá khứ đơn chỉ mốc bắt đầu (we graduated) → since.

  9. 9.My eyes hurt because I _____ at the screen all morning.

    1. A. have been staring
    2. B. am staring
    3. C. stares
    4. D. have been stare
    Xem đáp án và giải thích

    Đáp án: A. have been staring

    Hành động kéo dài liên tục (all morning) và để lại dấu vết ở hiện tại (mắt đau) → hiện tại hoàn thành tiếp diễn have been staring.

  10. 10.The last time I visited my grandparents was in May. → I _____ my grandparents since May.

    1. A. didn't visit
    2. B. don't visit
    3. C. haven't visited
    4. D. hadn't visited
    Xem đáp án và giải thích

    Đáp án: C. haven't visited

    since May → hiện tại hoàn thành. Câu gốc nói lần cuối là tháng Năm, nghĩa là từ đó đến nay chưa thăm → haven't visited.

Bắt đầu luyện tập

Câu hỏi thường gặp

Thì hiện tại hoàn thành là gì?

Thì hiện tại hoàn thành (present perfect) diễn tả việc đã xảy ra trong quá khứ nhưng còn liên quan đến hiện tại: trải nghiệm, kết quả còn đó, hoặc tình trạng kéo dài đến nay. Công thức là S + have/has + V3/ed, ví dụ I have finished my homework.

Dấu hiệu nhận biết thì hiện tại hoàn thành là gì?

Các từ since, for, already, yet, just, ever, never, so far, up to now, until now, recently, lately, before, cụm this is the first time, và khoảng thời gian chưa kết thúc như today, this week, this year. Nếu có mốc đã kết thúc như yesterday, ago, last… thì dùng quá khứ đơn.

Khi nào dùng since, khi nào dùng for?

for + khoảng thời gian (bao lâu): for three months, for a long time. since + mốc thời gian (từ khi nào): since Monday, since 2018, since I was a child. Câu hỏi tương ứng là How long…?

Hiện tại hoàn thành khác quá khứ đơn thế nào?

Quá khứ đơn nói về việc ở một thời điểm đã kết thúc, thường có mốc như yesterday, last year, in 2020. Hiện tại hoàn thành không nêu thời điểm, hoặc nói về khoảng thời gian kéo dài đến bây giờ. I lost my key yesterday. nhưng I've lost my key. (giờ vẫn chưa tìm thấy).

"Have been to" và "have gone to" khác nhau ra sao?

have been to là đã đến một nơi và đã quay về (nói về trải nghiệm). have gone to là đã đi và chưa về, người đó đang ở nơi kia. My dad has been to Paris. (đã từng đi) khác My dad has gone to Paris. (giờ đang ở Paris).

Khi nào dùng hiện tại hoàn thành tiếp diễn?

Khi muốn nhấn mạnh quá trình, thời lượng của hành động kéo dài đến hiện tại, hoặc hành động vừa dừng còn để lại dấu vết: I've been studying for three hours., It's been raining; the road is wet. Muốn nói kết quả, số lượng đã xong thì dùng hiện tại hoàn thành.

Một số bài ngữ pháp khác

← Tất cả bài ngữ pháp