After making clocks for years I realized that my favorite way of getting and setting the time for a clock project is throwing an NTP code snippet onto an esp8266 board and calling it a day. My SunRise project therefore uses an ESP12E module with the necessary power management and jellybeans to allow easy ftdi cable program uploading. The OLED is powered directly from the 20V input, and the current is limited by a beefy lm317 that I've had knocking about for ages.
The ESP12E pokes NIST for the current time, and checks it against the preprogrammed time. If it's pretty close, the ESP12E begins the sunrise routine. Using PWM, it toggles a transistor that shorts the ADJ pin of the lm317 to ground, which in practice blanks out the OLED panel. Do this quickly enough and you get a very nice gradient of brightness. The length of the sunrise is set to 15 minutes by default, so over the next 15 minutes the OLED panel will be steadily brightening to its maximum brightness, and it will hold that brightness for another 15 minutes, or however long you specify. This routine can be ended at any time by hitting the button tied to GPIO0.