The reason is the TimeZone implementation "GMT" aka "Europe/London". Apparently not. Europe/London is not the same as GMT - definitely not in the summer. Usally it's the same in winter, except when weird laws are in effect. I take it you're doing something like
TimeZone.getTimeZone("Europe/London")
rather than
TimeZone.getTimeZone("GMT")
?
The latter would in fact give you GMT, correctly, as far as I know. The former will give you whatever London was using at the time. It's historiclly correct except for the label "GMT", which is flat-out wrong in this case. The part of this which is Java's fault is described
here.
local calendar time: Mon Mar 20 01:00:00 BST 1972 brasilian show time ?? british summer time ?? British Summer Time in this case. From 1968-1971 BST would've meant British Standard Time, which was like British Summer Time all year round. This is the period that Java's TimeZone (or rather ZoneInfo) is mislabeling as GMT. But calling it BST would've been confusing too since most people would think you mean Summer time, and for discussing Jan 1 that doesn't make much sense. Though at least that would alert people looking that the date that something weird was going on.
What this means is that most of the years 70 and 71 (how long before 70) there was a time difference to GMT in the GMT's own country. Is that right and if so why? Because they were on crack?

Well given the time period it was probably a different drug involved. But it's a fallacy to assume that people in Britain use GMT; frequently, they don't. Every summer, for example. :roll:
So - if you ask Java for GMT, you get GMT. But if you ask for London time, you may get something which is mislabeled as GMT.

It's not clear whether this is better of worse than what Britain was actually using at the time.
Incidentally toGMTString() is technically deprecated, though I'm not sure why since it still seems to give correct results. Maybe there's another loophole out there somewhere. But TimeZone.getTimeZone("GMT") is officially the preferred way to get GMT.