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.
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'scó thể làhe ishoặche 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âu | Công thức | Ví dụ |
|---|---|---|
| Khẳng định | S + have / has + V3/ed | I have finished. She has left. |
| Phủ định | S + have / has + not + V3/ed | We haven't eaten yet. He hasn't called. |
| Câu hỏi Yes/No | Have / 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ắn | Yes, 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.
getcó V3 làgot(Anh) và thường làgotten(Mỹ):Prices have got / have gotten higher.Riênghave gotnghĩa sở hữu thì cả hai bên đều dùnggot.
| Nguyên mẫu | Quá khứ đơn (V2) | Quá khứ phân từ (V3) | Nghĩa |
|---|---|---|---|
| be | was / were | been | thì, là, ở |
| go | went | gone | đi |
| do | did | done | làm |
| see | saw | seen | nhìn thấy |
| eat | ate | eaten | ăn |
| write | wrote | written | viết |
| take | took | taken | lấy, mang |
| give | gave | given | cho |
| break | broke | broken | làm vỡ |
| forget | forgot | forgotten | quên |
| begin | began | begun | bắt đầu |
| buy / find / make | bought / found / made | bought / found / made | mua / 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.)
- 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
sincecó 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.agokhông đi với hiện tại hoàn thành: không viếtI have met him two days agomà làI met him two days ago.
| Đi với | Ví dụ | |
|---|---|---|
| for | khoảng thời gian: two hours, three days, ten years, a long time, ages | I've lived here for ten years. |
| since | mốc thời gian: 2015, Monday, last summer, 8 o'clock, I was a child | I've lived here since 2015. |
- 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í
yetdùng trong câu phủ định và câu hỏi; trong câu khẳng định dùngalready. 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á).evercò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ớihaven't: không nóiI haven't never seen.
| Từ | Nghĩa | Vị trí thường gặp | Ví dụ |
|---|---|---|---|
| just | vừa mới | giữa have/has và V3 | I'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âu | She has already paid. / She's paid already. |
| yet | chưa (phủ định), …chưa? (câu hỏi) | cuối câu phủ định và câu hỏi | I haven't replied yet. Have you replied yet? |
| still | vẫn chưa (nhấn mạnh, sốt ruột) | trước haven't/hasn't | He still hasn't called me. |
| ever | đã từng (câu hỏi) | giữa chủ ngữ và V3 | Have you ever been to Japan? |
| never | chưa bao giờ | giữa have/has và V3 | I'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ảiWhen 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ành | Quá 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 Koreakhi đang đứng ở Việt Nam kể chuyện; câu đúng làI have been to Korea.
- 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ảiI've been knowing. - Với
live, work, study, teach, khi đi kèmfor/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ành | Hiệ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úc | Ví dụ |
|---|---|
| It's / This is the first (second…) time + S + have/has + V3 | This is the first time I have driven a car. |
| So sánh nhất + S + have/has + ever + V3 | She is the kindest person I have ever met. |
| S + haven't/hasn't + V3 + for … = It's … since S last + V2 | I 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. |
- 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
- 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.
- Sau
sincechọn mốc (2019, last May, I was ten), sauforchọn khoảng (two years, a long time). Nếu sau chỗ trống là mệnh đề thìsince + quá khứ đơn. - Đề 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. - Thấy
This is the first time…hoặcthe 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ànhhad V3. - 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.I _____ this film three times so far. It's my favourite.
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.She has worked for this company _____ 2019.
Xem đáp án và giải thích
Đáp án: B. since
2019là mốc thời gian →since.forđi với khoảng thời gian;in 2019vàagodùng với quá khứ đơn.3.We have lived in Da Nang _____ ten years.
Xem đáp án và giải thích
Đáp án: C. for
ten yearslà khoảng thời gian →for.4._____ Minh and Lan finished their presentation yet?
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 Lansố nhiều →Have.5.I _____ Mr Tuan at the conference last week.
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ớilast week.6."Where's Nam?" – "He _____ to the bank. He'll be back in a few minutes."
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 tonghĩa là đã đi và đã về, không hợp.havesai vì chủ ngữhe.7.It's the first time I _____ sushi. It's delicious!
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 eatenchỉ dùng khi câu ở quá khứ (It was the first time…).8.I haven't talked to my old classmates _____ we graduated.
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.My eyes hurt because I _____ at the screen all morning.
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ễnhave been staring.10.The last time I visited my grandparents was in May. → I _____ my grandparents since May.
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.
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.