AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Uhrzeit addieren

Ein Thema von derklausi · begonnen am 30. Dez 2015 · letzter Beitrag vom 2. Jan 2016
Antwort Antwort
derklausi

Registriert seit: 8. Dez 2015
17 Beiträge
 
#1

Uhrzeit addieren

  Alt 30. Dez 2015, 22:25
Datenbank: 1 • Version: 1 • Zugriff über: 1
Hallo..

Eine Frage habe ich, in zwei Edit Feldern sollen je eine aktuelle Uhrzeit eingetragen werden (funktioniert) in einem weiteren Edit Feld soll nun die Differenz der zwei Zeiten eingetragen werden. Wie ist hier die formel?

Viele Grüsse
  Mit Zitat antworten Zitat
madas

Registriert seit: 9. Aug 2007
207 Beiträge
 
#2

AW: Uhrzeit addieren

  Alt 30. Dez 2015, 22:40
Schaue mal nach geeigneten Methoden in der Unit "DateUtils" nach.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Uhrzeit addieren

  Alt 30. Dez 2015, 22:43
Beim TDateTime Typ handelt es sich um einen Double, wobei vor dem Komma die Tage seit dem 31.12.1899 und nach dem Komma die Millisekunden seit Mitternacht stehen.

Wenn Du einen Wert von dem anderen abziehst erhälst Du einen Double der die Tagesdifferent vor dem Komma und die Zeitdifferenz im Nachkommabereich enthält.
Markus Kinzler
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#4

Oder: Uhrzeiten Differenz ermitteln ganz ausführlich

  Alt 30. Dez 2015, 22:58
Hier würde ich erst einmal die beiden Edit-Felder durch zwei Vcl.ComCtrls.TDateTimePicker ersetzen. Danach würde ich das Property Kind dieser beiden Komponenten auf dtkTime ändern, so daß nur Uhrzeiten eingegeben werden können. Benötigst du beides, also Uhrzeit und Datum, nimmst du vier DateTimePicker: jeweils zwei für das Datum und jeweils zwei für die Uhrzeit. Im Property DateTime steht immer das aktuelle Datum nebst Uhrzeit.

Um das komplette Datum zweier DateTimePicker zu ermitteln, benötigst du die Unit System.DateUtils. Dort findest du die beiden Funktionen DateOf und TimeOf: Erstere entfernt den Zeitanteil aus dem TDateTime-Wert, letztere den Datumsanteil. Beide Resultate zusammen ergeben dann das gewünschte Datum:
Delphi-Quellcode:
Function TForm1.GetDateTimeFromPickers(Const Picker_Datum, Picker_Zeit : TDateTimePicker) : TDateTime;
begin
  Result := System.DateUtils.DateOf(Picker_Datum.Date) +
            System.DateUtils.TimeOf(Picker_Zeit.Time);
end;
Damit kannst du nun das Datum der beiden DateTimePicker-Gruppen, die quasi das Start- und das Enddatum darstellen, ermitteln. Nun benötigst du noch den Wert, der die vergangene Zeit zwischen diesen beiden Datumswerten darstellt. In der bereits genannten Unit DateUtils gibt es diverse Between-Funktionen, die genau das tun: Sie liefern die zwischen zwei TDateTime-Werten liegende Zeit wahlweise in Millisekunden, Sekunden, Minuten, Stunden, Tagen, Wochen, Monaten oder Jahren zurück.

Diesen Wert schreibst du dann in das TEdit, in dem du das Ergebnis haben willst, oder auch in ein TLabel oder was auch immer.

Nachtrag:
  1. Dein Posting steht wohl im falschen Bereich, denn mit Datenbanken hat das erstmal nichts zu tun.
  2. Könntest du bei Gelegenheit deine Delphi-Version, mit der du arbeitest, in deinem Profil eintragen? Das wäre unter Umständen hilfreich beim Versuch, dir weiterzuhelfen.
  3. Differenzen zwischen zwei Werten zu ermitteln nennt man Subtrahieren, Addieren dagegen bezeichnet den Vorgang, um die Summe zu berechnen.

Geändert von Perlsau (30. Dez 2015 um 23:07 Uhr) Grund: Nachtrag
  Mit Zitat antworten Zitat
Der schöne Günther

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

AW: Uhrzeit addieren

  Alt 31. Dez 2015, 10:35
Wenn Du einen Wert von dem anderen abziehst erhälst Du einen Double der die Tagesdifferent vor dem Komma und die Zeitdifferenz im Nachkommabereich enthält.
Warum der Aufwand mit Kommazahlen? TTimeSpan hat alles was man braucht:

Delphi-Quellcode:
uses System.TimeSpan;

procedure justTimeSpanThings();
var
   fromDate, toDate: TDateTime;
   timeSpan: TTimeSpan;
begin
   fromDate := EncodeDate(1945, 12, 24);
   toDate := EncodeDate(2015, 12, 28);

   timeSpan := TTimeSpan.Subtract(toDate, fromDate);
   ShowMessageFmt('Das waren %.0f Tage', [timeSpan.TotalDays]);
end;
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.143 Beiträge
 
Delphi 10.3 Rio
 
#6

AW: Uhrzeit addieren

  Alt 31. Dez 2015, 10:54
Hallo..

Eine Frage habe ich, in zwei Edit Feldern sollen je eine aktuelle Uhrzeit eingetragen werden (funktioniert) in einem weiteren Edit Feld soll nun die Differenz der zwei Zeiten eingetragen werden. Wie ist hier die formel?

Viele Grüsse
Formel? Ich gehe nicht davon aus, dass Du nicht Stunden in Minuten + Minuten umrechnen kannst...

Fragst Du nach der SQL Anweisung? Oder warum hast Du es unter Datenbanken gepostet?
  Mit Zitat antworten Zitat
derklausi

Registriert seit: 8. Dez 2015
17 Beiträge
 
#7

AW: Uhrzeit addieren

  Alt 1. Jan 2016, 23:03
Hallo,

ich habe noch eine Frage.

Ich habe einige Tedit Felder die mit meinem DBGrid verbunden sind, trage ich in einige Felder etwas ein und Speichere es wird es auch im DBGrid hinterlegt, nun habe ich aber noch 3 Tedit felder in denen die Uhrzeiten stehen die über Button Click abgerufen werden, diese werde auch angezeigt, wenn ich nun aber in ein anderen Feld etwas eingebe verschwindet die Uhrzeit.

Grüße
  Mit Zitat antworten Zitat
Benutzerbild von blawen
blawen

Registriert seit: 1. Dez 2003
Ort: Luterbach (CH)
677 Beiträge
 
Delphi 12 Athens
 
#8

AW: Uhrzeit addieren

  Alt 2. Jan 2016, 02:04
...wenn ich nun aber in ein anderen Feld etwas eingebe verschwindet die Uhrzeit.
Ich verstehe eigentlich nur Bahnhof

Wenn es verschwindet, wirst Du es entsprechend so programmiert haben - aber ohne Deinen Code zu kennen, wird es schwierig sein, einen konkreten Tipp zu geben.
Roland
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#9

AW: Uhrzeit addieren

  Alt 2. Jan 2016, 08:08
Hallo, ich habe noch eine Frage.
Wurde denn deine ursprüngliche Frage so beantwortet, daß du zu einer Lösung gelangt bist?
Wenn ja, wie sieht diese Lösung aus?

Ich habe einige Tedit Felder die mit meinem DBGrid verbunden sind, trage ich in einige Felder etwas ein und Speichere es wird es auch im DBGrid hinterlegt, nun habe ich aber noch 3 Tedit felder in denen die Uhrzeiten stehen die über Button Click abgerufen werden, diese werde auch angezeigt, wenn ich nun aber in ein anderen Feld etwas eingebe verschwindet die Uhrzeit.
Gewöhnlich gilt hier die Regel: Neue Frage, neuer Thread. Das bedeutet, du solltest für jede Frage ein neues Thema erstellen. Auf diese Weise kann das Forum über die interne Suche auch als Nachschlagewerk verwendet werden.

Wie Blawen bereits richtig anmerkte, ist es ohne deinen Code nicht möglich, zu erkennen, was du falsch gemacht hast.
  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 16:48 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