Holy cow, I wrote a book!
A customer observed that if they use Explorer to view the timestamp
on a file, it is not always in agreement with the value shown if
they run a plain DIR in a command prompt.
They are sometimes off by an hour.
Why is that?
Whenever you hear the phrase "off by an hour" you should
immediately think "Daylight Saving Time".
The formatting of file timestamps shown by Explorer
has changed over time.
The most recent algorithm (at the time of this writing)
is to use the time zone that was in effect at your current
location at the time the timestamp was created.
For example, a file created at noon in June 22
will show its timestamp as noon,
even if you view it in the middle of December.
That's because Explorer says,
"Well, on June 22,
Daylight Saving Time was not in effect,
even though it's in effect now,
so I will interpret that time zone as if Daylight Saving Time
were not active."
(Hey, Raymond, didn't you get that backward?
Answer: The customer who asked this question is in New Zealand.)¹
The old-style function for converting a UTC timestamp into a local timestmap
The documentation for that function points you at the sequence of
operations you need to perform if you want to use the time zone
of the timestamp instead of the current time zone.
Explorer switched to using the time zone of the timestamp,
but the command processor continues using the old-style conversion.
Why doesn't the command processor get with the program?
Well, for one thing, the people who decide what Explorer does
are not the same people who decide what the command processor does.
(The Explorer folks can certainly make suggestions,
but they can't force the command processor to do anything.)
It's like asking why Taco Bell puts the men's room on the left,
but Pizza Hut puts it on the right.
The command processor is an old and cranky program.
The command processor yells at Explorer to get off his lawn.
The command processor gets upset when his Internet connection
flakes out while he's watching Matlock online.
The command processor doesn't care about your fancy-pants
localized file names; it shows the raw file system names.
The command processor has hundreds of thousands of scripts,
and there's no way of knowing how many of them depend on the
exact way it formats dates.
You may be able to wheedle the command processor into making
some changes for you,
but you'd better have a really good reason,
and he's going to be really grumpy about it.
The command processor was once cajoled into changing its date format
to four-digit years back in the late 20th century,
and he did it only because everybody insisted that it was
But he was so grumpy about it, he had an option to go back.
¹ Actually, that's not true.
The customer who asked the question was in Texas,
but I moved him to New Zealand for the purpose of the story.
People in the Southern Hemisphere always have to put up with
us Northerners assuming that summer starts in June,
so I figured I'd turn the tables for once.