Oops Java thinks the clock is an hour out.

I have been experimenting with home automation and have been testing out openHAB. I wanted to have a set of lights turn on at sunset and turn off early in the morning. One of the issues I found was with the time in openHAB being an hour out. After some head scratching and research everything looked normal.

$ date
Sun Mar 16 00:37:35 EDT 2014

Looks good the time is correct, the timezone is correct.

$ date --utc
Sun Mar 16 04:40:11 UTC 2014

Looks good as well.

$ md5sum /etc/localtime 
e4ca381035a34b7a852184cc0dd89baa  /etc/localtime

$ md5sum /usr/share/zoneinfo/America/New_York
e4ca381035a34b7a852184cc0dd89baa  /usr/share/zoneinfo/America/New_York

The timezone is set correctly to New_York.

I am using openjdk 1.7 so I need to install the dev tools,

$ sudo yum install java-1.7.0-openjdk-devel

then run a little sample code,

more DateDemo.java 
import java.util.Date;
import java.util.*;

public class DateDemo {
   public static void main(String args[]) {
       // Instantiate a Date object
       Date date = new Date();

       // display time and date using toString()

       System.out.println(new Date());

$ javac DateDemo.java

$ java DateDemo
Sat Mar 15 23:45:40 GMT-05:00 2014
Sat Mar 15 23:45:40 GMT-05:00 2014

Ok thats interesting, the time is an hour out from the system clock, and when I ran it on another centos 6 box I got,

$ java DateDemo
Sun Mar 16 00:47:46 EDT 2014
Sun Mar 16 00:47:47 EDT 2014

Both hosts were set to the same New York time zone, and the md5 on /etc/localtime matched, so both appeared to be configured the same way.

A little more digging on how java gets it timezone and i found,


Turns out Java looks at /etc/sysconfig/clock.

The working host had,

$ more /etc/sysconfig/clock 

and the other one with the issue had

$ more /etc/sysconfig/clock
# The time zone of the system is defined by the contents of /etc/localtime.
# This file is only for evaluation by system-config-date, do not rely on its
# contents elsewhere.
ZONE="America/New York"

Well look at that, one has New York and the other has New_York.

After adding the _ to New_York Java now reports the correct time on both hosts, and my issue with openHAB is fixed.

1 thought on “Oops Java thinks the clock is an hour out.

  1. Gene R.

    Wow. I looked at that several times and didn’t see the missing ‘_’ until you pointed it out. Thanks!


Leave a Reply

Your email address will not be published. Required fields are marked *