TIME (DATE AND TIME handling) SERVER RESPONSIBILITIES FOR DATES AND TIME ZONES: - User object has a timezone offset field which is user selectable - stores all times and dates in UTC in DB - expects dates coming from client to be in UTC - Does take into account timezone offset when FILTERING a LIST for sending to the client that has a relative date filter like [NEXTMONTH] - This is the only place on the server where the user's time zone offset is used for anything //************************ NOTE ABOUT TIME ZONES AND WHY I CHOSE TO USE A SELECTED OFFSET THE USER SETS RATHER THAN A TIME ZONE DESCRIPTOR //.NET CORE AYANOVA SERVER RUNNING ON LINUX VS WINDOWS MAY NOT HAVE ALL TIME ZONES DEFINED AND MAY ERROR OUT //THE ONLY SAFE WAY TO ENSURE CROSS PLATFORM TIME ZONE HANDLING FOR RELATIVE DATE FILTERS IS TO HAVE A HARD CODED TIME ZONE OFFSET //THIS WAY USERS CAN SET IT AND IT'S INDEPENDENT OF ANY 3RD PARTY TIME ZONE DEFINITIONS ETC, MORE INFO HERE: //https://devblogs.microsoft.com/dotnet/cross-platform-time-zones-with-net-core/ /* Time Zone differences Windows maintains its list of Time Zones in the Windows registry. You can find a list of those values here. In contrast, Linux distributions use the Time Zone database curated by the Internet Assigned Numbers Authority (IANA). You can find the latest copy of that database on IANA’s website. Here’s an example of what an IANA Time Zone looks like America/New_York The issue comes into play when you write your .NET Core code specifically using one of the two formats and then try to run the application on another operating system. Because the runtime is deferring the Time Zone management to the underlying operating system you will need to handle the differences if that scenario applies to you. */ LOCALE has defaults for currency, date, time handling CLIENT RESPONSIBILITIES FOR DATES AND TIME ZONES - Send all datetime fields on records to the server in UTC - Displayed dates and times are adjusted to user timezoneoffset - Month, day of week name and am / pm designators come from localized text CURRENCY - Displayed and accepted based on UserOption currency symbol NUMBER - Displayed and accepted based on userOptions numeric format https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/NumberFormat