As it was suggested, weather is fixed in GTA III. There are 4 types of weather: sunny (0), cloudy (1), rainy (2), foggy (3). Here is the array of weather loop: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 01 02 02 01 00 00 00 01 03 03 01 00 00 01 01 00 00 00 00 00 00 00 00 01 01 02 02 01 02 01 00 00 00 00 00 00 00 00 00 00 03 03 00 00 00 02 01
Weather changes only when another hour advances. Sometimes (like sunny->fog) change doesn't happen immediately. The first weather is fixed, it is 1 (cloudy) up until 8-ball is spawned after safehouse cutscene. After it next hour advance will mean that the current weather will be set to 0, element #2 of the array (first 0 it skipped). At next hour advance the weather will be set to 0, and previous weather will be set to 0 as well and so on. There are 3 missions that lock weather the same way: Blow Fish after Trashmaster is in fish factory until the end of the mission, Last Requests from getting to boat until the end of the mission, and Gone Fishing from the start to finish. During these missions running under these circumstances the weather loop will not advance (so weather changes will be postponed). Similarly, arriving too late at safehouse (approximately 4:46 and later) will pospone it as well. The Exchange locks weather as well during ending cutscene until mission end.
I found a method to advance the weather type in list with replays only:
You just need to play a replay that starts at xx:59.
In speedruns we'll do what's shown in the video: ¤press F3 F1 when it's xx:59 on the ingame clock ¤press F1 F1 to advance in the list by 1, make sure you're doing this step within the next 20ish seconds after the F3 F1 replay
another thing: you can't change the current weather with this method, you need to actually wait for the next ingame hour, so the value is increased by 1 due to the next ingame hour and then the game changes weather according to the array Nick posted