Forum: PC-Programmierung C# : DateTime in UnixTime umwandeln


von Bastler (Gast)


Lesenswert?

1
$ date +%s
2
1555601071
3
$ date
4
Thu 18 Apr 17:25:28 CEST 2019
5
$ date +%s
6
1555601130
1
DateTime tim=DateTime.Now;
2
TimeSpan span = (tim - new DateTime(1970,1,1, 0,0,0,0,DateTimeKind.Utc));
3
long unixTime = (long)span.TotalSeconds;
4
-> 1555608132

Das C#-Programm und date-Befehle waren auf dem gleichen Rechner  zu 
ähnlicher Zeit.
Irgendwas stimmt da nicht, die beiden Zeiten unterscheiden sich um 7200 
Sekunden.

Was ist da falsch?

von Tim T. (tim_taylor) Benutzerseite


Lesenswert?

Zeitzone und Sommerzeit = +2 Stunden

Versuch es mal mit DateTime.UtcNow

: Bearbeitet durch User
von Bastler (Gast)


Lesenswert?

in dem DateTime.Now ist Sommerzeit/Zeitzone schon berücksichtigt.

Wenn ich statt DateTime.Now DateTime.UtcNow nehme, dann stimmt es, aber 
warum?

Utc ist ja nur eine Darstellung der Universellen Zeit.

von Tim T. (tim_taylor) Benutzerseite


Lesenswert?

Weil dir date auch nur die UTC gibt wenn du mit %s aufrufst...

von Dr. Sommer (Gast)


Lesenswert?


von Tim T. (tim_taylor) Benutzerseite


Lesenswert?

Kurzgefasst: DateTime.Now rechnet die Zeitzone und Sommerzeit oben 
drauf, wenn du davon dann eine UTC abziehst, bleibt die UTC 
Zeitdifferenz + die Differenz durch Zeitzone und Sommerzeit.

von leo (Gast)


Lesenswert?

Bastler schrieb:
> Irgendwas stimmt da nicht, die beiden Zeiten unterscheiden sich um 7200
> Sekunden.

Auf die unterschiedliche Zeitzone wurde ja schon verwiesen.

Generell war es bei Windows C Compilern wohl so, dass die 'epoch 0'-Zeit 
von der Laune und dem Ort des Programmierers abhing. Ich hatte in 30 
Jahren ca. 6 defines fuer die richtige Zeit - also immer Vorsicht.

leo

von Tim T. (tim_taylor) Benutzerseite


Lesenswert?

Eine Andere Lösung wäre das du deine gebastelte Zeit mit der gleichen 
Zeitzone ausstattest:

DateTimeKind.Local

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.