[Requires Java 1.4]
The outer dial, in conjunction with the sun hand, shows the sidereal time. The dial itself rotates once each year. The middle dial, which is stationary, and the sun hand show the 24 hour time. The inner dial shows the position of the sun and the moon on the ecliptic, and rotates once in each sidereal day.
The positions of the sun and moon are mean positions, the actual positions may deviate somewhat from this, particularly in the case of the moon. Inspired by a recent visit to Prague, though the Prague Clock of course has an offset zodiac dial and indicates sunrise and sunset times also.
Code is here