Is this grammatically correct: "It has happened for a while now." [closed]
Solution 1:
It's wrong because has happened, as the perfect tense, indicates an action that is momentary, or at least completed; whereas for a while now indicates something continuing and requires the imperfect tense. So It happened a while ago or It has been happening for a while now, but not ?It has happened for a while now.
(Many native speakers would not even notice the error, but that's no reason to accept it, any more than the fact that many people wouldn't notice if they were short-changed in a shop is a reason to accept it when it happens to you.)
Solution 2:
It has happened a while ago now.
or
It has been happening for a while now.
"Has happened" means it was a momentary event, which left consequences until now, but the event itself didn't last until now. Say, "Poland has joined European Union a good while ago now." Poland is still the member of EU, but the moment of joining was a decade or more ago.
"Has been happening" means a process that is continuous or repeating until now. "Ukraine has been trying to join EU for a while now". Their candidacy started a long time ago, but various reasons kept it back. They still want to join the EU, but it still doesn't happen.
Now, "for" is used to designate a period of time, "for past five years". If you want to pick a point in time, you'll use "five years ago". So, 'for' goes with continuous, 'been'. If you use past perfect, 'have done', you must indicate a point in time, or a period that ended already.