Automatic conversion using "global" state between "local"/"human" time (5pm where I am now) and points in time (ie with timezone) is one of the biggest sins imho for many libraries/db's/languages. Ran into it a bunch of times using C# as well.

The two most difficult things in software engineering...

Naming.

Timestamps.

You must not have invalidated your cache since a third thing.

Obviously there are more but the original joke circa 1999 was this. Made Y2K even more exciting.

> but the original joke circa 1999 was this.

No, the original joke, which GP is referring to, is “There are only two hard things in computer science. Naming things and cache invalidation.”

It predates 1999 and the Y2K bug by a fair amount. I first saw it on Usenet in the early 90s, around 1994 I think.

> There are only two hard things in computer science. Naming things and cache invalidation.

More like

  There are only two hard things in
  computer science. Naming, cache
  invalidation, and off-by-one bugs.

too, parallel processing!

And of by one errors

You are off by one characters.

In my freshman Pascal class, I quickly learned how to use “iff” [if and only if] in a sentence, and my T.A. loved that.

Timestamps aren't hard. It's almost everything else with time that's hard.

It made sense when databases and programs were used almost exclusively locally. It still makes sense for local apps (e.g. local-first or local-only smartphone and desktop apps) who typically will automatically do the right thing that way based on the OS regional settings.

It only started causing widespread issues with the rise of cross-region internet SaaS. Database systems, language runtimes, and OS APIs are keeping the default behavior for backwards compatibility.

Yes and no, it was thought to make sense for "end-user-programmers" where it's helpful to be fully locale specific, I'm Swedish and my OS settings makes programs expecting comma (,) signs for decimal separation is something that's actually hit me today when copy-pasting between programs.

So in practice, while it was kinda useful to be locale/region dependant for some users it's probably been more trouble in the long run to be overly helpful.

C# was released after y2k, so they don't have the excuse.

Also, You're missing the biggest sin here however, locale specific time is OK, automatically allowing conversions/comparisons to points in time types without specifying timezones has in principle never caused anything but grief.