Avatar billede dsj Nybegynder
02. november 2004 - 15:32 Der er 10 kommentarer og
1 løsning

Millisekunder (UTC) til DateTime

I Java returnerer metoden System.currentTimeInMillis() antallet af millisekunder siden 1970-01-01 00:00:00.000. Hvordan får jeg konverteret dette om til en DateTime-instanse i C#, når jeg får det tilsendt dette fra en Java-server?

C# arbejder tilsyneladende ikke som default ud fra UTC og millisekunder...
Avatar billede powernodes Nybegynder
02. november 2004 - 15:47 #1
hva med

  DateTime dt = new DateTime();
  string s = "1970-01-01 00:00:00.000";
  dt = DateTime.Parse(s);
  //Response.Write(dt);
Avatar billede dsj Nybegynder
02. november 2004 - 16:05 #2
Og så lige dt.AddMilliseconds(...); går jeg ud fra du mener, men er der ikke en mere "gennemført" måde at gøre det på? Kan det passe at C# ikke har funktionalitet til at behandle millisekunder i forhold til UTC??
Avatar billede arne_v Ekspert
02. november 2004 - 16:09 #3
Mit bedste bud vil være:

new DateTime(ms * TICKS_PER_MS + TICKS_1_JAN-1970)

(find selv de 2 konstanter)
Avatar billede arne_v Ekspert
02. november 2004 - 16:10 #4
"find selv" som i "lav selv"
Avatar billede dsj Nybegynder
02. november 2004 - 16:14 #5
LOL - .NET virker nu lidt ambuteret, når det kommer til dato-tids funktioner :-)
Avatar billede arne_v Ekspert
02. november 2004 - 16:32 #7
Der er ikke den samme support for det magiske tidspunkt 1-JAN-1970, men
det kan der jo være religiøse årsager til.
Avatar billede dsj Nybegynder
02. november 2004 - 23:16 #8
Meget mystisk, hvis jeg gør som følger:

long timestamp ...; // System.currentTimeInMillis() fra Java
DateTime received = DateTime.Parse("1970-01-01 00:00:00.000").AddMilliseconds(timestamp);

Så bliver 'received' præcis en time mindre, end hvis jeg udskriver tiden i Java - og da begge applikationer afvikles på samme maskine, er det ikke rod med sommer-/vintertid. Nogen der har en ide til hvad der lige går galt?!?!

Selvfølgelig kan jeg blot skrive:

DateTime.Parse("1970-01-01 01:00:00.000")...

Men jeg bryder mig ikke om genveje til at undgå fejl...
Avatar billede arne_v Ekspert
02. november 2004 - 23:21 #9
System.currentTimeInMillis() returnerer antal millisekunder siden 1-JAN-1970 GMT tid, så
det passer vel meget godt.

CET tid 1-JAN-1970 + antal miilsekunder siden 1-JAN-1970 GMT = CET tid nu - 1 time

(Når du lavet om til en java.util.Date i Java så håndterer den forskellen)
Avatar billede dsj Nybegynder
03. november 2004 - 22:02 #10
Der må godt lægges svar...
Avatar billede arne_v Ekspert
03. november 2004 - 23:15 #11
.
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