The code below:
import java.sql.Date;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
public class FooMain {
private static final DateFormat DF = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm'Z'");
public static void main(String args[]) {
System.out.println(DF.format(new Date(0)));
}
}
prints out:
1970-01-01T01:00Z
Should'nt it have been 1970-01-01T00:00Z
instead? I understand that Unix Epoch time is always unambiguous and we don't have to worry about timezones, but here's my timezone in case it matters:
$ cat /etc/timezone
Europe/Madrid
new Date(0)
does correspond toJanuary 1, 1970, 00:00:00 GMT
. The issue is that, by default,DateFormat
will print the date in your system timezone. Set the timezone on your formatter to GMT:You have to
.setTimeZone()
yourSimpleDateFormat
; by default, the time zone is the system time zone: