On Tuesday, October 20, 2020 at 10:56:13 AM UTC-7, Eric Shulman wrote:
>
> Set birth-date to "18831119"...
>
The LOCAL TIME result will be "November 18th 1883 16:00:00"
> but the UTC result will be "November 19th 1883 00:00:00"
>
> Set birth-date to "18831118"...
> The LOCAL TIME result will "November 17th 1883 16:07:02"
> but the UTC result will be "November 17th 1883 23:59:02"
>
> There's some kind of weirdness happening with the time portion of the
> formatting!
>
Well... I did a little research and, while I still don't have a solution,
here's what I've found out:
1) Using the Chrome developer console:
* I entered $tw.utils.parseDate("18831119")
* The result was "Sun Nov 18 1883 16:00:00 GMT-0800 (Pacific Standard Time)"
* I entered $tw.utils.parseDate("18831118")
* The result was "Sat Nov 17 1883 16:07:02 GMT-0752 (Pacific Standard Time)"
So... it appears the source of the odd time value is $tw.utils.parseDate(),
which is defined as:
$tw.utils.parseDate = function(value) {
if(typeof value === "string") {
return new Date(Date.UTC(parseInt(value.substr(0,4),10),
parseInt(value.substr(4,2),10)-1,
parseInt(value.substr(6,2),10),
parseInt(value.substr(8,2)||"00",10),
parseInt(value.substr(10,2)||"00",10),
parseInt(value.substr(12,2)||"00",10),
parseInt(value.substr(14,3)||"000",10)));
} else if($tw.utils.isDate(value)) {
return value;
} else {
return null;
}
};
But that code just uses Date.UTC(...), which is JavaScript "native code",
so its internal workings are not determined by TiddlyWiki at all.
2) So, I started to wonder, "Is there something special about November 18,
1883?"... and this is what I found:
https://www.history.com/news/when-did-the-united-states-start-using-time-zones
Which says:
> On November 18, 1883, America’s railroads began using a standard time
> system involving four time zones, Eastern, Central, Mountain and Pacific.
> Within each zone, all clocks were synchronized. The railroad industry’s
> plan was adopted by much of the country, although the time-zone system
> didn’t become official across the United States until the passage of the
> 1918 Standard Time Act
So, it appears that the strange time output is related to the original
creation of standardized time zones!
The only work-around for this oddness is to use the trick that I suggested
some time ago, which Tony referenced in his reply.
For accurate dates, regardless of local timezone, add "12" to the end of
the date; e.g. "1883111812", which specifies a *time* of "12 noon".
Because timezones range from UTC-1200 to UTC+1200, the resulting computed
date will be correct by avoiding the effect of the
localtime timezone offset that shifts the time back (or forward) by up to
12 hours.
-e
--
You received this message because you are subscribed to the Google Groups
"TiddlyWiki" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/tiddlywiki/e54a8847-6cb8-4deb-a7f6-4734d2ea23b9o%40googlegroups.com.