The short answer is generally 3-9 months and depending on the immigration type, it could take up to 2 years.
The long answer is much more complicated. The length of time varies from case to case depending on the circumstances of each individual case.
The time it takes each USCIS office and each consular office to process a case varies on many factors, some of which are highlighted below.
If you don’t follow the instructions carefully and supply incomplete information, the petition is delayed until said information is furnished then it goes back in the processing queue.
Believe it or not, a world event such as a recession or war will greatly affect the time it takes to process a petition due to the scaling back and re-purposing of resources.
Is your government on friendly terms with the USA? Depending on your originating country, the timeline can differ drastically.
Immigration Policy Changes
Immigration policy can change in the blink of an eye. A signed executive order by the President can greatly affect the petition speed and process. If the administration decides to more closely scrutinize applications, the processing times can double leading to massive backlogs.
The more scrutiny the USCIS needs to put on applications, the more backlog it creates in processing. Unfortunately it is a waiting game. The best you can do is make sure your applications has been completed properly the first time, so you don’t have to go back onto the wait list or create unnecessary delays.
There is no best time of year to file a petition. The best advice is to be as thorough as possible on your initial filing, leaving no room for error or missing information.