While this should work, the issue for myself and some others who can't seem to get the fix to stick seems to be the game calculating the days passed slower than the clock:
For simplicity's sake, I set gamehour and gamedayspassed to 00.00 and 180.0000, respectively, which was my "next day." That should mean that at the following midnight my day will roll over on time, right? Except it didn't... at 12am my gamedayspassed was 180.9606. When I tested this on my beginning save, the game rolled over correctly and the gamedayspassed value was in synch with the gamehour.
In summary, the issue for myself and a few others seems to be that the gamehour is passing faster than the actual gameday. Gonna see if I can find a console command that shows the day interval used to calculate time passage and see what's going on.
Update: On further testing, I think it may have something to do with going over 100 days. I tried that fix again and it seemed to work, but my gamedayspassed was showing as 18 instead of 180. When I reset it to 180 time started slowing down again. Any of you good at maths know a way to write it out so that too many numbers doesn't confuse the engine?
Can't edit so a follow on:
This has nothing to do with vsync and everything to do with how many days you played. Let me know if you can duplicate the bug because I've been able to.
1. Load a save with less than 100 days
2. Wait until right before the day turns over WITHOUT using wait/rest... just sit around in real time. Use "show gamedayspassed" when the day changes and note the value. Should be around 11pm, for whatever reason.
3. Reload the save, "show gamedayspassed," then use the command "set gamedayspassed to 182.xxxx". Don't change the decimals, just move the day over 100. Wait again without using wait/rest and you'll notice the day won't roll over at the same time. Use "show gamedayspassed" again and you'll see that time has actually slowed down.
I'm no expert but I'm guessing the third number for the day is throwing the decimal off and time slows down when you get into triple digits because the clock and the gamedayspassed are out of synch.