To show used time_zone execute :
mysql> show variables like 'time_zone';
+---------------+--------+
| Variable_name | Value |
+---------------+--------+
| time_zone | SYSTEM |
+---------------+--------+
1 row in set (0.00 sec)
You said your time_zone variable is set to SYSTEM, so normally your system and MySQL have the same date.
Check your system date (on linux) :
root@myserv:~# date
mercredi 2 janvier 2013, 15:10:46 (UTC+0100)
Check your MySQL Server date :
mysql> select now();
+---------------------+
| now() |
+---------------------+
| 2013-01-02 15:10:58 |
+---------------------+
1 row in set (0.00 sec)
If the both dates are not the same it's really strange :) if your system have a wrong date, update your system date, if you want to change just MySQL date try :
mysql> set global time_zone='+01:00'
I used '+01:00' because i live in Paris but you should adapt this from your local time zone.
Max.