You print it in the default time zone, not in UTC. Although your calendar knows the time zone that interests you, the java.util.Date returned by getTime() is not ... and Date.toString() uses the system time zone.
Given that you indicated in the subject line that you wanted 12 AM at UTC, why do you expect to see Thu Jan 27 00:27:35 EST 2011? EST does not match UTC.
EDIT: As always, I just wanted to point out that Joda Time is usually a much more convenient API for using date / time arithmetic in Java. You are currently getting the correct answer, but I still recommend moving to Joda :)
source share