This is a difficult area of English for foreign learners, and I’m afraid you’re not going to understand it fully from a few answers here. Very briefly, you use the present perfect continuous form to talk about events in the recent past, particularly activities that have not been completed. The form is often found with the prepositions ‘for’ and ‘since’, as in ‘He’s been speaking for a very long time’ or ‘I’ve been working non-stop since this morning’.
Here are a few examples contrasting the present perfect with the present perfect continuous:
'I’ve done my homework' (it’s finished) / 'I’ve been doing my homework' (it’s not finished)
‘I’ve drunk my coffee' (it’s all gone) / ‘I’ve been drinking my coffee’ (there’s some left)
‘It’s rained every day since the weekend’ (repeated rain) / ‘It’s been raining all day’ (continuous rain)
Your own examples don’t really illustrate the use very well. You wouldn’t say ‘I have learned English language in the past few weeks’, because that suggests you’ve finished your studies and you don’t need to do any more. That’s unrealistic. No one learns English in a few weeks. I think these two examples might show the difference more clearly:
‘I have been studying English for two years’ (I’m still studying it)
'I have studied English, but I don’t speak it very well' (I studied it at some time in the past, but am not studying it any more)
There's a lot going on with this question, and with the sentence it presents for analysis.
First, being there isn't an action, and neither is not being there. So ignore that definition; it's obviously wrong. (BTW, it's not "present perfect tense" either -- English only has two tenses, Present and Past).
Second, there are four senses of the Perfect construction, which are elucidated here. This is Type 3, the Stative/Resultative sense, used to indicate that the direct effect of a past event still continues. In this case the past event is the speaker's leaving, a long time ago, and the direct effect of that event is the speaker's current absence.
Third, in a long time, like in weeks or in ages, is a Negative Polarity Item (NPI), i.e, it's only grammatical inside the scope of a Negative. So (2), without a negative, is ungrammatical:
- I haven't been there in a long time/in weeks/in ages.
- *I have been there in a long time/in weeks/in ages.
What's being asserted in (1) is that the state of the speaker's absence continues to the present from its inception a long time ago, or weeks ago, or "ages" ago. Affirmative ways do exist to say (2):
- I have been there for a long time/for weeks/for ages.
but they use for [time length]
, not the NPI construction in [time length]
Best Answer
Both are correct. Both are common, at least in "American English", and they mean exactly the same thing.