Avatar billede sbjerre Nybegynder
16. januar 2003 - 16:29 Der er 6 kommentarer og
1 løsning

Unix Epoch i .NET

Jeg er utrolig glad for at lagre dato og tidsformater i Unix Epoch format når jeg arbejder med PHP da det er perfekt at sortere efter mm.

Nu arbejder jeg desværre for tiden med noget .NET.....
Er der mulighed for at arbejde med Unix Epoch i .NET ?

Vh sbjerre
Avatar billede sbjerre Nybegynder
16. januar 2003 - 16:30 #1
det skal lagres på en MS SQL server iøvrigt, og jeg har ikke andet end dårlige erfaringer med datatypen datatime i MS SQL serveren, da jeg ikke har fuld kontrol over den drift SQL server hvor systemet i sidste ende skal placeres og kan derfor ikke styre regionsinstillinger.

Hvad gør jeg?
Avatar billede askhoej Praktikant
16. januar 2003 - 16:33 #2
Fandt dette på er fora:

************************************************

.NET does not make the number of seconds since 12:00:00AM 1/1/1970 readily available. This date and time is refered to the Epoch in the *nix world. It's primary use is for fix point date references.

I have wipped up some sample code that you can use to get this value in C#.

DateTime dtThen = new DateTime(1970,1,1,0,0,0,0);
DateTime dtNow = DateTime.Now;
TimeSpan span = dtNow - dtThen;
int timestamp = (int)span.TotalSeconds;


This example is quite simple. What I'm doing is first creating a DateTime object that represents 12:00:00AM 1/1/1970. I then retrieve a DateTime object from the static property Now of the DateTime object. The next step is to cast the difference in the DateTime objects into a TimeSpan object. The TimeSpan object's Seconds property represents the total number of seconds between the two dates.

DateTime manipulation within .NET is very sophisticated, but sometimes, what seems so easy, isn't. I hope you find this helpful.

************************************************

/Askhoej
Avatar billede askhoej Praktikant
16. januar 2003 - 16:36 #3
Du kan vel gemme det i en BigInt på MS SQL serveren

/askhoej
Avatar billede sbjerre Nybegynder
16. januar 2003 - 16:48 #4
det ser bare alt for godt ud, men hvordan får jeg datoformatet tilbage til f.eks. dd.mm.yyyy  ?
Bare nogle ideer, så må jeg selv hitte ud af resten. Jeg er bare helt tom for ideer...
Avatar billede sbjerre Nybegynder
16. januar 2003 - 16:54 #5
har prøvet med følgende, med det kaster en 'InvalidCastException'.....


DateTime dtThen = new DateTime(1970,1,1,0,0,0,0);
DateTime dtNow = DateTime.Now;
TimeSpan span = dtNow - dtThen;
int timestamp = (int)span.TotalSeconds;
Response.Write(timestamp.ToString()+"<br />");
String dato = (Convert.ToDateTime(timestamp)).ToShortDateString();
Response.Write(dato + "<br />");

hmmm
Avatar billede askhoej Praktikant
16. januar 2003 - 17:06 #6
Frit fra hukommelsen, så måske noget i denne retning (Epoch -> DateTime):

int timestamp = 454516514651; //mange sekunder

DateTime dt = new DateTime(1970,1,1,0,0,0,0);
dt.AddSeconds(Convert.ToDouble(timestamp));
String dato = dt.ToShortDateString();

noget i den retning...

/askhoej
Avatar billede sbjerre Nybegynder
17. januar 2003 - 09:03 #7
Ja det det var nu ellers møj tæt på, manglede lige 'dt =', men så virker det også (Bare så andre kan få gavn af det hvis de støder på samme problem ved lejlighed)
Tusind tak for hjælpen

*******************************************************
nt timestamp = 454516514651; //mange sekunder

DateTime dt = new DateTime(1970,1,1,0,0,0,0);
dt = dt.AddSeconds(Convert.ToDouble(timestamp));
String dato = dt.ToShortDateString();
*******************************************************

Den komplette kode kunne dermed se ud som følger:

*******************************************************

DateTime dtThen = new DateTime(1970,1,1,0,0,0,0);
DateTime dtNow = DateTime.Now;
TimeSpan span = dtNow - dtThen;
int timestamp = (int)span.TotalSeconds;
Response.Write(timestamp.ToString()+"<br />");
dtThen = dtThen.AddSeconds(Convert.ToDouble(timestamp));
String dato = dtThen.ToShortDateString();
Response.Write(dato);

*******************************************************
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester