AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Wie wandle ich mikrosekunden in eine Zeit um?
Thema durchsuchen
Ansicht
Themen-Optionen

Wie wandle ich mikrosekunden in eine Zeit um?

Ein Thema von BBoy · begonnen am 29. Sep 2016 · letzter Beitrag vom 30. Sep 2016
Antwort Antwort
BBoy

Registriert seit: 17. Jan 2007
418 Beiträge
 
Delphi 10 Seattle Professional
 
#1

Wie wandle ich mikrosekunden in eine Zeit um?

  Alt 29. Sep 2016, 17:31
Delphi-Version: 10 Seattle
Ich bekomme von einem Server eine Timestamp in Mikrosekunden zurück und möchte diese nun in Stunden: Minuten umwandeln und die Differenz zu der jetzigen Zeit berechnen.

Hat jemand eine Idee wie man so etwas programmiert?
  Mit Zitat antworten Zitat
Aviator

Registriert seit: 3. Jun 2010
1.611 Beiträge
 
Delphi 10.3 Rio
 
#2

AW: Wie wandle ich mikrosekunden in eine Zeit um?

  Alt 29. Sep 2016, 17:37
Schau mal bei den Delphi-Referenz durchsuchenDateUtils nach. Ob da genau für den Fall jetzt was dabei ist weiß ich gerade nicht auswendig. Zur Not kann man so etwas auch recht schnell selbst programmieren.

EDIT: Gerade erst nochmal vollständig gelesen. Um die Zeit zwischen TimeStamp und Now zu berechnen gibt es auf jeden Fall diverse Funktionen wie z.B. MinutesBetween, SecondsBetween, HoursBetween, usw.

Geändert von Aviator (29. Sep 2016 um 17:40 Uhr)
  Mit Zitat antworten Zitat
BBoy

Registriert seit: 17. Jan 2007
418 Beiträge
 
Delphi 10 Seattle Professional
 
#3

AW: Wie wandle ich mikrosekunden in eine Zeit um?

  Alt 29. Sep 2016, 17:45
Für Mikrosekunden habe ich nichts in Delphi gefunden auch nicht in DateUtils.

Diese Seite berechnet das Perfekt: http://www.timestampconvert.com/
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.176 Beiträge
 
Delphi 10 Seattle Enterprise
 
#4

AW: Wie wandle ich mikrosekunden in eine Zeit um?

  Alt 29. Sep 2016, 17:48
Warum nicht einfach eine TTimeSpan ? Die ist genau für so etwas gedacht.
Delphi-Quellcode:
uses System.TimeSpan;

const
   myMicroseconds: Int64 = 123456789123;
var
   timeSpan: TTimeSpan;
begin
   timeSpan := TTimeSpan.Create(myMicroseconds * 10); // Ein "Tick" ist eine Zehntel-Mikrosekunde
   WriteLn('Es sind ', timeSpan.Hours, ' Stunden und ', timeSpan.Minutes, ' Minuten');
   readln;
end.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#5

AW: Wie wandle ich mikrosekunden in eine Zeit um?

  Alt 29. Sep 2016, 18:28
DateUtils hat nur Funktionen, die mit TDateTime arbeiten, bzw. nur von diesem ausgehend.
Und paar wenige Funktion zur Konvertierung, aber da nur von und nach anderen "Datums"-Formaten (UnixTimeStamp und JulianDate)

Viele Date-Funktionen verstecken sich immernoch in der SysDtils.


Aber wenn man nachliest, wie der Typ TDateTime definiert ist, dann kann man sowas auch selber umrechnen.
Vor dem Komma die Tage und danach der Anteil des Tages.

Und dann gibt es auch nette Konstanten, zum umrechnen, ala HoursPerDay, MinsPerDay, SecsPerDay, MSecsPerDay oder OneHour, OneMinute, OneSecond und OneMillisecond.

Delphi-Quellcode:
DateTime := (myMicroseconds / 1000 * OneMillisecond);

DateTime := Now - (myMicroseconds / 1000 * OneMillisecond);

usw.

Ich bekomme von einem Server eine Timestamp in Mikrosekunden zurück und möchte diese nun in Stunden: Minuten umwandeln und die Differenz zu der jetzigen Zeit berechnen
Timestamp?

Eine "Dauer" oder doch ein "Zeitstempel" ?

http://www.unixtimestamp.com/
Vielleicht sowas wie ein "zu genauer Unix-TimeStamp" ... in Sekunden umgerechnet würde es dann Delphi-Referenz durchsuchenUnixToDateTime geben
und mit DaySpan HourSpan MinuteSpan SecondSpan oder DaysBetween MinutesBetween SecondsBetween MilliSecondsBetween, zusammen mit Now wäre dann die Differenz.
$2B or not $2B
  Mit Zitat antworten Zitat
BBoy

Registriert seit: 17. Jan 2007
418 Beiträge
 
Delphi 10 Seattle Professional
 
#6

AW: Wie wandle ich mikrosekunden in eine Zeit um?

  Alt 30. Sep 2016, 16:01
Ich habe 1475066323000 und das ist ein komplettes Datum das aber in meinem Fall immer nur max. 30 Minuten vom jetzigen entfernt ist.

Dein Beispiel
Code:
DateTime := (myMicroseconds / 1000 * OneMillisecond);

DateTime := Now - (myMicroseconds / 1000 * OneMillisecond);
funktioniert bei mir nicht. Was soll man denn für OneMillisecond eingeben? Für myMicroseconds habe ich meinen wert 1475066323000 verwendet.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
 
Delphi 12 Athens
 
#7

AW: Wie wandle ich mikrosekunden in eine Zeit um?

  Alt 30. Sep 2016, 16:18
Was soll man denn für OneMillisecond eingeben?
MSecsPerDay (aus Sysutils)

Aber dann wäre die Formel auch falsch. So sollte es dann gehen:
DateTime := myMicroseconds / 1000 / MSecsPerDay;

myMicroSeconds/1000 wandelt in Millisekunden um, das nochmal durch MSecsPerDay dividiert ergibt Tag, was wiederum die Einheit für TDateTime ist.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#8

AW: Wie wandle ich mikrosekunden in eine Zeit um?

  Alt 30. Sep 2016, 16:31
Oder auch so:
Delphi-Quellcode:
const
  MicroSecsPerDay = MSecsPerDay * 1000;

DateTime := myMicroseconds / MicroSecsPerDay;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
BBoy

Registriert seit: 17. Jan 2007
418 Beiträge
 
Delphi 10 Seattle Professional
 
#9

AW: Wie wandle ich mikrosekunden in eine Zeit um?

  Alt 30. Sep 2016, 21:14
Danke euch allen!
Da waren einige richtige Ansätze dabei. Und endlich habe ich es kapiert
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#10

AW: Wie wandle ich mikrosekunden in eine Zeit um?

  Alt 30. Sep 2016, 22:53
Delphi-Referenz durchsuchenOneMillisecond ist eine neue Konstante in DateUtils und der reziproke Wert von Delphi-Referenz durchsuchenMSecsPerDay.

Also eigentlich eine sinnlos doppelte Konstante, aber halt ob man lieber Multipliziert oder Dividiert.
$2B or not $2B

Geändert von himitsu (30. Sep 2016 um 22:56 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:10 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz