Using the milli() function in order to do accurate timing on the Arduino doesn’t work because it shares the same priority in code execution as any other code. I wrote a blog post that talks about using PWM and an interrupt in order to create a much more accurate clock. In my post I talk about how to wire the PWM to the interrupt and how to use the Adafruit 2.2 inch TFT LCD to display the time. The full post with pics, links and demo code is here:
https://contractorwolf.wordpress.com/arduino-pwm-interrupt-clock/
I also recorded a video of it in action: