Hiện tại hoàn thành: Quy tắc chung

1. Hình thức

have/has + past participle
Ví dụ:
I have broken my glasses. (Tôi đã làm vỡ kính của tôi.)
Have you finished? (Cậu đã xong chưa?)
She hasn't phoned. (Cô ấy chưa gọi.)

Trong tiếng Anh cổ, một số hình thức hiện tại hoàn thành được thành lập với be chứ không phải have (ví dụ: Winter is come). Cấu trúc này không thường xảy ra trong tiếng Anh hiện đại.

2. Những ngôn ngữ khác

Trong một số ngôn ngữ khác, có những hình thức động từ được cấu trúc như hiện tại hoàn thành trong tiếng Anh (hãy so sánh: I have worked trong tiếng Anh và j'ai travaille trong tiếng Pháp, ich habe gearbeitet trong tiếng Đức, ho lavorato trong tiếng Ý, he trabajado trong tiếng Tây Ban Nha). Chú ý hiện tại hoàn thành trong tiếng Anh được dùng khá khác so với hầu hết các ngôn ngữ trên.

3. Những sự kiện đã hoàn thành có liên quan đến hiện tại

Chúng ta dùng thì hiện tại hoàn thành đặc biệt để nói một sự kiện hay hành động đã kết thúc có liên quan đến hiện tại theo một cách nào đó. Nếu chúng ta nói rằng something has happend, chúng ta đang nói về quá khứ và hiện tại cùng một lúc.
Ví dụ:
I can't go on holiday because I have broken my leg.
(Tôi không thể đi nghỉ được vì tôi bị gãy chân.)
KHÔNG DÙNG: I can't go on holiday because I broke my leg.

Chúng ta cũng có thể thay đổi câu ở hiện tại hoàn thành sang một câu ở hiện tại với nghĩa tương tự.
Ví dụ:
I’ve broken my leg. —> My leg is broken now.
(Tôi bị gãy chân. -> Chân tôi bây giờ bị gãy.)
Have you read the Bible? —> Do you know the Bible?
(Cậu đã đọc kinh thánh chưa? -> Cậu có biết kinh thánh không?
Some fool has let the cat in. —> The cat is in.
(Kẻ ngốc nào đó đã cho con mèo vào. -> Con mèo ở trong.)
Mary has had a baby. —> Mary now has a baby.
(Mary có em bé. -> Mary giờ đang có em bé.)
Our dog has died. —> Our dog is dead.
(Con chó của chúng tôi đã chết.)

Hiện tại hoàn thành được dùng để diễn đạt ý hoàn thành hoặc những thành tựu.
Ví dụ:
At last! I've finished. (Cuối cùng tôi cũng xong.)
Have you done all the housework? (Con đã làm xong tất cả việc nhà chưa?)

Chúng ta không dùng hiện tại hoàn thành nếu chúng ta không đang nghĩ về hiện tại. 
Hãy so sánh:
I've travelled in Africa a lot. (= I know Africa.)
(Tôi đến rất nhiều nơi ở Châu Phi.) (= Tôi biết Châu Phi.)
Some people think that Shakespeare travelled a lot in Germany.
(Một số người nghĩ rằng Shakespeare đã đi rất nhiều nơi ở Đức.)
KHÔNG DÙNG: Some people think that Shakespeare has travelled a lot in Germany.

4. Sự kiện đã kết thúc: tin tức

Chúng ta thường dùng hiện tại hoàn thành để thông báo tin tức của những sự kiện gần đây.
Ví dụ:
Andy has won a big prize!
(Andy đã chiến thắng một giải thưởng lớn!)
Have you heard? Uncle George has crashed the car again.
(Cậu nghe gì chưa? Bác George lại đâm xe nữa.)
Here are the main points of the news. The pound has fallen against the dollar. The Prime Minister has said that the government’s economic policies are working. The number of unemployed has reached five million. There has been a fire...
(Đây là những điểm chính của bản tin. Đồng bảng đã giảm hơn so với đồng đô la. Thủ tướng nói rằng chính sách kinh tế của chính phủ đang có hiệu quả. Số lượng những người thất nghiệp đã lên đến 5 triệu người. Có một vụ cháy...)

Sau khi thông báo tin tức, chúng ta luôn dùng quá khứ đơn để đưa thêm thông tin.
Ví dụ:
Uncle George has crashed the car again. He ran into a tree in High Street
(Bác George lại đâm xe nữa. Báo ấy đâm vào một cái cây ở đường cao tốc.)

5. Các từ chỉ thời gian: ever, before, recently,...

Khi chúng ta nói về những sự kiện đã kết thúc với các từ mang nghĩa 'tại một thời điểm nào đó cho đến hiện tại' (như ever, before, never, yet, recently, lately, already), chúng ta thường dùng hiện tại hoàn thành.
Ví dụ:
Have you ever seen a ghost? 
(Cậu đã bao giờ nhìn thấy ma chưa?)
She’s never said 'sorry' in her life.
(Cô ấy chưa bao giờ nói xin lỗi.)
I'm sure we've met before.    
(Tôi chắc chắn chúng ta đã gặp trước đây.)
Has the postman come yet?
(Người đưa thư đã đến chưa?)
We haven't seen Beth recently.
(Gần đây chúng tôi không gặp Beth.)

6. Hành động lặp lại cho đến hiện tại

Chúng ta có thể dùng hiện tại hoàn thành để nói điều gì đó đã xảy ra một vài lần cho tới hiện tại.
Ví dụ:
I've written six letters since lunchtime.
(Tôi đã viết sáu bức thư kể từ lúc ăn trưa.)

Trạng từ chỉ sự thường xuyên như often, sometimes, occasionally rất thông dụng với hiện tại hoàn thành.
Ví dụ:
How often have you been in love in your life? 
(Anh có thường hay yêu không)
I've sometimes thought of moving to Australia.
(Đôi khi tôi nghĩ về việc chuyển đến Úc.)

7. Hành động tiếp diễn cho đến hiện tại

Để nói về hành động hoặc sự việc vẫn tiếp diễn cho đến thời điểm hiện tại, cả hiện tại hoàn thành và hiện tại hoàn thành tiếp diễn đều có thể được sử dụng (phụ thuộc vào loại động từ và ý nghĩa).
Ví dụ:
I've known her for years. (Tôi biết cô ấy nhiều năm rồi.)
KHÔNG DÙNG: I know her for years.
I've been thinking about you all day. (Anh nghĩ về em suốt cả ngày nay.)