Present Perfect Progressive — Настоящее совершённое длительное время
The Present Perfect Progressive Tense Настоящее совершённое длительное время
Это время выражает длительное действие, которое начало совершаться в прошлом и всё ещё совершается в настоящее время или только что завершилось. Переводится на русский язык настоящим временем. Здесь обычно указывается, как долго совершается то или иное действие, т. е. указывается период времени, определённый или неопределённый:
for an hour — час, в течение часа,
for 2 hours — 2 часа, на протяжении 2 часов,
for 10 years — на протяжении 10 лет,
for many years — много лет,
for a week/month — неделю/месяц, на протяжении недели/месяца,
for a long time — долгое время, долго,
long —долго,
since yesterday — со вчерашнего дня,
since 5 o’clock — с 5 часов,
How long …?— Как долго…?,
Since when …? — С каких пор…?
«+»: have/has + been + V-ing.
Вспомогательный глагол присутствует как в отрицательной и вопросительной, так и в утвердительной форме.
You have been waiting for this moment for a long time. — Ты давно ждёшь этого момента (начал ждать когда-то в прошлом, ждал какое-то время и вот, наконец, дождался только что).
She has been living in this town for 10 years. — Она живёт в этом городе уже 10 лет (стала жить здесь 10 лет назад, прожила уже 10 лет и продолжает здесь жить).
«-»: have/has not + been + V-ing.
«?»: (What, Where) have/has + подлежащее + been + V-ing …?
Have you been waiting for her answer long? — И долго ты ждёшь её ответа?
What have you been talking about for so long? — О чём это вы так долго разговариваете?
Не has already been drinking this cup of tea for an hour. — Он уже целый час пьёт эту чашку чая (всё никак не выпьет).
I have been looking for you all over for about 2 hours. — Я везде тебя ищу уже часа 2 (и вот нашёл только что).
What have they been doing here since early morning? — Что они здесь делают с раннего утра?
How long has he been living in Denmark? — Как долго он живёт в Дании?
She has been teaching English since 1996. — Она преподаёт английский с 1996 года.
Но: How long have you known her? — Как давно ты её знаешь?
Вместо Present Perfect Progressive употреблено Present Perfect, потому что глагол to know не употребляется в Progressive.
We have been here for 20 minutes already. — Мы здесь (находимся) уже 20 минут (глагол to be не употребляется в Progressive).
It has been a long time since I saw him. — Я давно его не видел.
Если смысловой глагол у нас один из тех, которые не употребляются в Progressive, а по смыслу надо употребить его в Present Perfect Progressive, тогда употребляем его Present Perfect.
(Е. Грицай — Шпаргалка по английскому языку)