I wonder why no one does this:
Calendar time = Calendar.getInstance();
time.add(Calendar.MILLISECOND, -time.getTimeZone().getOffset(time.getTimeInMillis()));
Date date = time.getTime();
Update: Since Java 8,9,10 and more, there should be better alternatives supported by Java. Thanks for your comment @humanity