New java.sql.Date(0) не соответствует 00:00:00 1 января 1970 г.
Код ниже:
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)));
}
}
выдает:
1970-01-01T01:00Z
Должен ли он быть 1970-01-01T00:00Z
вместо этого? Я понимаю, что время Unix Epoch всегда недвусмысленно, и нам не нужно беспокоиться о часовых поясах, но здесь мой часовой пояс в случае, если это имеет значение:
$ cat /etc/timezone
Europe/Madrid
Ответы
Ответ 1
new Date(0)
соответствует January 1, 1970, 00:00:00 GMT
. Проблема в том, что по умолчанию DateFormat
будет печатать дату в системном часовом поясе. Установите часовой пояс на вашем форматировании на GMT:
DF.setTimeZone(TimeZone.getTimeZone("GMT"));
System.out.println(DF.format(new Date(0))); // outputs: 1970-01-01T00:00Z
Ответ 2
Вы должны .setTimeZone()
ваш SimpleDateFormat
; по умолчанию часовой пояс является системным часовым поясом:
final SimpleDateFormat fmt
= new SimpleDateFormat("yyyy-MM-dd'T'HH:mm'Z'");
fmt.setTimeZone(TimeZone.getTimeZone("GMT"));
System.out.println(fmt.format(new Date(0)));