you could set the ingame hour to an other value using the commands
hour and
sethour and also the commands
minute and
setminute and, if necessary
day and
setday.
you could start a map where you just stand there for a while, like 10 minutes real-time which you clock on your watch or something and then you open the character menu to have a look at the day, open the inventory and use a watch to get the hours and minutes.
then you have to figure out how long one minute ingame is in real-time.
(I recommend to clock a very accurate value and use a map that you created in the editor, with an arcade-info on it so you wont get hungry/thirsty/tired while you wait, and you can also give yourself a watch to clock the hour and minute!)
next you can use the command
timer and trigger an event every few seconds (the amount of seconds one ingame minute takes minus a certain factor to make the ingame minutes have less seconds which the player cant prove because he cant check the seconds ingame).
using this you can skip an ingame minute from 60 ingame-seconds (which are less than 60 real-time-seconds!) to a lower amount, just set the current minute +1, or if the current minute is 59 set it to 0 and set the current hour +1 (same with days).
so if you'd skip half of the minutes a day also would last half as long. the sun should automatically rise faster because it is connected to the current time that is.
at least I think that is how it should work, havent tested it myself yet but I'm pretty sure it will work