Esse problema deve estar relacionado a região configurada no seu sistema ou o horário de verão.
A classe GregorianCalendar ou a Calendar permite configurar um TimeZone para a sua região. Enfim, vc pode trabalhar com qualquer dessas duas classes, ao invés de Date, e configurar o seu TimeZone que deseja utilizar. Fica assim:
Utilizando GregorianCalendar
GregorianCalendar gc = new GregorianCalendar( TimeZone.getDefault() );//pega o TimeZone configurado no SO
System.out.println( gc.getTime().toString() );
Utilizando Calendar
Calendar c = Calendar.getInstance( TimeZone.getDefault() );//pega o TimeZone configurado no SO
System.out.println( c.getTime().toString() );
Você tb pode, ao invés de TimeZone.getDefault(), utilizar new TimeZone( “GMT-3” )
obs.: Esse valor é comparado com o horário de greenwich, onde para o meu caso, a diferença é 3 horas e para o seu caso é 4 horas. Portanto ficaria dessa forma:
Utilizando GregorianCalendar
GregorianCalendar gc = new GregorianCalendar( new TimeZone( "GMT-4" ) );
System.out.println( gc.getTime().toString() );
Para maiores detalhes dê uma olhada nas classes GregorianCalendar, Calendar e TimeZone.
Documentação Java