Gå til innhold

C#: LastWriteTime feil ved Daylight Saving Time


Anbefalte innlegg

Hei

 

Jeg trenger litt hjelp med "LastWriteTime" i C Sharp.

 

Jeg har en fil, userform.nor, som tilhører DataEase453 som ved overgang til vinter/sommertid må korrigeres "Modified" tidsstempel på. Det har seg sånn at i windows xp (som i dette tilfellet er påkrevd) justerer systemet klokkeslettet på denne filen ved nevnte overgang.

Created og Accessed tidsstemplene har ikke noe å si.

 

Filen må ha klokkeslettet 03:14:16 (og datoen 1.juni 1992, men den endres ikke av systemet).

 

Dette er egentlig ikke noe problem, jeg får både lest og satt tiden rett på filen. Men merkelig nok bare ved overgang fra vintertid til sommertid. Bytter klokken fra sommer til vintertid så går det litt i kluss og jeg får en time feil.

 

Det syns jeg er rart, når jeg ikke endrer tiden pluss/minus en time, men setter den helt konkret. Utdrag fra koden:

 

DateTime dt = new DateTime(1992, 6, 1, 3, 14, 16);

file.SetLastWriteTime(fileName, dt);

 

Noen som skjønner hvorfor?

 

Jeg har en teori, om enn litt sær.

Dersom systemet har en klokkke som tikker og går, men som ikke i og for seg endres, bare korrigeres "live" ved sommertid.

Så vil det stemme med den timen feil.

Grunnen til at jeg lurer er at TotalCommander rapporterer at filen har klokkeslett 02:14:16, mens jeg tar en properties sjekk så viser den 03:14:16 (både i windows og i total commander sin høyreklikk properties på fila). Men igjen, jeg skriver jo en bestemt tid og ikke basert på pluss/minus timer...

 

Veldig åpen for forslag her.

Lenke til kommentar
Videoannonse
Annonse

Tipper rett og slett dette er fordi sommertid er UTC+2. Når du angir tid slik du gjør, så er vel default at c# setter DateTime objektet til en UTC tid og beregner tiden i objektet ut i fra maskinen er stillt inn som. Tror du vil ha mer kontroll om du angir DateTimeKind i constructoren og alltid forholder deg til UTC :)

Lenke til kommentar

Så det du sier er altså at når jeg setter en spesifikk dato og tid via DateTime, så slenger den likevel på sommertidforskjellen? Trodde jeg unngikk det ved å sette tiden direkte og ikke legge til/trekke fra den sommertimen...

 

Jeg får gjøre noen tester med DateTimeKind i tillegg, takk for tipset.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...