It really depends on the person, but surely it would take a lot of time and knowledge to be an expert. Expert means that you understand deeply all the part of your programming language which you are expert in, and know most of it's frameworks and how they work.
As for the time, if you use most of your day time to learn, then it should only take few months.
Sigh... Programming takes time and if your into speed and learning it all in a matter or weeks or months ???
Then you are in the wrong line of work this discipline will drive you nuts if you dont have any patience.
So its best to take your time find your niche and study it and create.
Your just gonna have to do what everyone else who is serious about it does. Work on it. There is no instant gratification here. It takes hard work and dedication. Keep at it and don't give up. Eventually your hard work is bound to pay off.