Se conosce il DateTime
contiene un valore UTC, è possibile utilizzare the following:
DateTime iKnowThisIsUtc = whatever;
DateTime runtimeKnowsThisIsUtc = DateTime.SpecifyKind(
iKnowThisIsUtc,
DateTimeKind.Utc);
DateTime localVersion = runtimeKnowsThisIsUtc.ToLocalTime();
Ad esempio, nella mia attuale applicazione, creo timestamp nel mio database con SQL utcnow
, ma quando li ho letti nella mia applicazione C# la proprietà Kind
è sempre Unknown
. Ho creato una funzione wrapper per leggere il timestamp, impostare volutamente il suo Kind
su Utc
e quindi convertirlo in ora locale, essenzialmente come sopra.
Nota che DateTime.ToLocalTime()
solo non influisce sul valore se uno (o entrambi) dei seguenti stive:
Kind
proprietà s' Il DateTime
è DateTimeKind.Local
- tuo fuso orario locale è tale che "non modifica "è la conversione corretta
Penso che possiamo supporre che il secondo punto non sia vero. Pertanto, sembra che la proprietà sia impostata su Local
. Hai bisogno di capire perché qualunque cosa ti fornisca questi DateTime
s pensa che siano locali.
sai cosa fuso orario ci si trova – elyashiv