sql >> Databáze >  >> RDS >> Sqlserver

Převod libovolného data a času z času serveru na čas uživatele (zabývající se standardním a letním časem)

TimeZoneInfo ano, ano. (Je to součást rámce .NET, nikoli část C# – C# je pouze jazyk, který náhodou používáte.) Nemyslím si však, že to je to, co opravdu chcete dělat.

Proč ukládáte DateTime na serveru vůbec časové pásmo? Ve většině případů by bylo rozumnější uložit jej v UTC. Kromě čehokoli jiného, ​​pokud je váš server v časové zóně, která dodržuje letní čas, skončíte s nejednoznačností na jednu hodinu za rok, když se hodiny vrátí. (Stejný místní čas se vyskytuje dvakrát.)

Jakmile jej uložíte jako UTC, měli byste jej také dát svému Javascriptovému klientovi jako UTC. I když říkáte, že máte "nějaký java skript, který mě posune uživatele proti UTC" - to bude záviset na přesném okamžiku v čase. Například, když jsem ve Velké Británii, můj offset je někdy 0 a někdy +1 hodina. Pokud předáte UTC zpět klientovi, může to zjistit místní čas z tohoto času UTC. Váš server nemůže, pokud nezískáte přesné reprezentace časového pásma od klienta k serveru, což je obecně ošemetná věc.

Opět platí, že samotný C# zde není relevantní. Není jasné, kterou část frameworku .NET máte na mysli - TimeZone ? TimeZoneInfo ? DateTime ? TimeZoneInfo obsahuje historická data, ale pouze pokud používáte verzi operačního systému, která to podporuje.

No, pokud vás to bude pravděpodobně zajímat. Nemá tolik historických dat jako TZDB a má velmi zvláštní zastoupení pro Rusko a Namibii, ale obecně má představu o změně pravidel.



  1. Jak vyladit výkon SQL Server, Azure SQL Database a Amazon RDS

  2. Získejte nejběžnější hodnoty pro všechny sloupce

  3. Kód při spuštění otevře připojení jdbc, ale netiskne data tabulky. Co je na tomto kódu špatného?

  4. PHP/MySQL:Modelujte opakující se události v databázi, ale dotazujte se na rozsahy dat