sql >> Databasteknik >  >> RDS >> Sqlserver

Konvertera valfri datumtid från servertid till användartid (som hanterar standard- och dagsljustid)

TimeZoneInfo gör det, ja. (Det är en del av .NET-ramverket, inte en del av C# - C# är bara det språk du råkar använda.) Jag tror dock inte att det är det du verkligen vill göra.

Varför lagrar du DateTime i serverns tidszon ändå? Det skulle vara mer förnuftigt att lagra det i UTC, i de flesta fall. Bortsett från allt annat, om din server är i en tidszon som observerar sommartid, kommer du att sluta med tvetydighet en timme per år, när klockan går tillbaka. (Samma lokala tid inträffar två gånger.)

När du har lagrat den som UTC bör du ge den till din Javascript-klient som UTC också. Medan du säger att du har "något java-skript som kommer att få mig att användarna kompenseras från UTC" - det beror på det exakta ögonblicket i tiden. Till exempel, eftersom jag är i Storbritannien är min offset ibland 0 och ibland +1 timme. Om du skickar tillbaka UTC till klienten kan det räkna ut den lokala tiden från den UTC-tiden. Din server kan inte, om du inte kan få en exakt representation av tidszonen från klienten till servern, vilket i allmänhet är en knepig sak att göra.

Återigen, C# i sig är inte relevant här. Det är inte klart vilken del av .NET-ramverket du menar - TimeZone ? TimeZoneInfo ? DateTime ? TimeZoneInfo har historiska data, men bara om du använder en version av operativsystemet som stöder det.

Tja, så långt som du förmodligen bryr dig. Den har inte lika mycket historisk data som TZDB, och den har några väldigt udda representationer för Ryssland och Namibia, men den har generellt sett tanken på att reglerna ändras.



  1. Olika sätt att jämföra SQL Server-tabellschema och data

  2. Vilken är den bästa teckenkodningen för japanska språket för DB-, php- och html-display?

  3. uppdatera unik indexerad kolumn i mysql

  4. MySQL:hur förhindrar man infogning av en rad med alla kolumner =NULL?