Проблема связана с часовым поясом, а не с самим значением Date
. Поэтому вместо распечатки текущей даты используйте что-то вроде этого, чтобы распечатать текущий часовой пояс:
import java.util.TimeZone ;
public class Test {
public static void main(String[] args) throws Exception {
TimeZone zone = TimeZone.getDefault();
System.out.println(zone.getDisplayName());
System.out.println(zone.getID());
}
}
Например, для меня это печатает:
Greenwich Mean Time
Europe/London
Как только вы узнаете больше информации о том, что Java считает вашим часовым поясом по умолчанию, вы можете начать искать почему так думает. Есть ли что-нибудь о том, как вы используете Java, что является нестандартным? Какие-либо переменные окружения, которые подозрительно похожи на неправильный часовой пояс?
Вы также можете распечатать следующие системные свойства, которые используются при определении часового пояса:
user.timezone
user.country
java.home
(Распечатайте их до получения часового пояса по умолчанию - user.timezone
устанавливается как часть его извлечения, если он не был установлен ранее.)