The Time library uses the timer interrupt to track time between sync intervals.
You are using the M328 at 8Mhz vs the "normal" 16 Mhz.
The processor does not know how fast it is running.
The IDE tells the core code the speed of the processor at compile time
based on the board type selected.
My guess is that you have selected a board type that uses a 16Mhz clock
but your AVR is actually running at 8mhz.
When you do this, the core s/w will be confused because it was told
incorrect information.
The result is twice as many interrupts per second will happen than it was told would happen,
and so time will appear to run twice as fast.
My guess is that this is your problem.
I'd also bet that all your delay() calls would also finish twice as fast as they should.
Make sure to select a board type that has the F_CPU set to 8mhz vs 16Mhz.
You can verify the speed that the IDE is communicating to the core code by
turning on verbose output:
[File]->[Preferences]
and check the box
Show verbose output during: [x] compilation
When you build the code look at the output and
look for the F_CPU define.
It will look like:
-DF_CPU=8000000L
If you see this:
-DF_CPU=16000000L
Then you have a problem and need to pick another board type
or create one that for your board.
--- bill