HTML takes a while depending on what you want to do. HTML concepts are simple and easy to grasp. Learning what tags do what can take time. Learning what is poor coding vs good coding takes time. For example nested table make make your job easier but are a no no and 1 table should be used. This makes for lighter code and will most likey display the same in all browsers. Where as nested table are heavier code and may not be supported in off browsers.
Frames and iFrames may also take time to learn.
Now getting to PHP, JSP, ASP Perl, Ruby, C, python , Java, C++, D, god knows what else
These take much time. I have been learning PHP or about 3 years now. Still learning. There is so much you can do with it.
You can create images on the fly in PHP.
Now you might say whay would I want to do that. Well picture a server with people surfing to it all day and night. You want to log this info. Like IP address, number of page requests, number of hits per day, week, month etc. Now you are getting 1,000 hits per day you find. This is a bit of info to read through.
To solve this you decide to take the IP and just add a counter to it like so
|ip address hits page request refferer
|18.104.22.168 100 24 http://www.undergroundnews.com
|22.214.171.124 10 2 http://www.google.com
|126.96.36.199 139 13 http://www.hotbot.com
Now wouldn't it be nice to see this laid out graphicaly. But to do that you would need to create the images on the fly. That is do the math then plot the pie chart or bar chart. Then you could visualy see the % each visitor made toward total network traffic.
That is just image creation. In that you have to learn the functions for EACH supported image type.
There is also GUI coding with GTK(gimp tool kit(yes that is the name and no I am not fucking with you))http://www.gtk.org/
PHP/GTK can create nice GUI apps for windows, Linux or any OS that allows either to be installed.
Now you have to learn PHP AND GTK. http://gtk.php.net/
Or maybe you want to stor and process data. For this you may want to use a flat file system. http://us2.php.net/manual/en/function.file.php
Or maybe a data base, but which one
MySQL - http://us2.php.net/mysql
SyBase - http://us2.php.net/manual/en/ref.sybase.php
SQLlite - http://us2.php.net/manual/en/ref.sqlite.php
PostgreSQL - http://us2.php.net/manual/en/ref.pgsql.php
Or maybe you want to create flash animations on the fly. That is have them created when a page loads. http://us2.php.net/manual/en/ref.swf.php
See the thing is, no one learns everything about a language at least not in todays time. There is soooo much to learn to say I want to learn is a endless statement. The learning doesn't stop. A new version of the language or program will come out and you will have to refresh, or you will want to do something you have not yet done and there for will have to learn more.
Now I am fairly good with PHP. I really am, but I probably do not know half of the shit that I can do with it.
Pergesu is pretty good with Java, but he is still learning more. Gizmo is a god in Perl, but he still finds new ways to do things. Digital Geek is a photoshop Guru but he is still learning new techniques.
So you see when you say how long it is really a relative question. What do you want to do? What language, app, database? How good do you want to be with it? What are you hoping to accomplish? How fast can you read and retain what you read?
These are all question you need to ask yourself and answer your self. Then you will have an idea. YOu will see, once you start, you will have more questions and more to read. It never stops.