Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Uhrzeit Stunden und Minuten abrunden (https://www.delphipraxis.net/176966-uhrzeit-stunden-und-minuten-abrunden.html)

klaus9 7. Okt 2013 21:25

Uhrzeit Stunden und Minuten abrunden
 
Hallo

ich habe gerade ein kleines Problem:

Zwei Text Felder

Im Edit1.text = wird die aktuelle Stunde angezeigt
Im Edit2.text = wird die Minutenzahl angezeigt

Jetzt zeigt er mir z.B.

14:53 an jetzt würde ich gerne in den weiteren text Feldern Edit3.text und Edit4.text immer die abgerundete Zeit
anzeigen lassen

sprich bei Edit1.text = 14 und im Edit2.text = 53 jetzt im Edit3.text = 14 (bleibt ja) und in Edit4.text = 45


Soll mir halt immer die 15 Minuten varianten anzeigen 15,30,45 und 00

wie bekomme ich es hin..

Meflin 7. Okt 2013 21:40

AW: Uhrzeit Stunden und Minuten abrunden
 
Code:
Round(53 / 15) * 15
und schon hast du die gewünschten Minuten ;)

Volker Z. 7. Okt 2013 21:49

AW: Uhrzeit Stunden und Minuten abrunden
 
Hallo,

nimm ein konstantes Array
Delphi-Quellcode:
ARRAY_MIN_QUATER : array [0..3] of string = ('00', '15', '30', '45');
, dann kannst Du mit
Delphi-Quellcode:
Edit4.text := ARRAY_MIN_QUATER [Minuten div 15]
zuweisen.

Gruß

klaus9 7. Okt 2013 21:54

AW: Uhrzeit Stunden und Minuten abrunden
 
hmm funktioniert irgendwie nicht..

Meflin 7. Okt 2013 21:55

AW: Uhrzeit Stunden und Minuten abrunden
 
Zitat:

Zitat von klaus9 (Beitrag 1231102)
hmm funktioniert irgendwie nicht..

Und was sollen wir mit dieser Info jetzt anfangen :roll: ?

Volker Z. 7. Okt 2013 22:16

AW: Uhrzeit Stunden und Minuten abrunden
 
Hallo,

Zitat:

hmm funktioniert irgendwie nicht..
Es funktionieren beide Varianten. Vielleicht war ich nicht ausführlich genug.

Delphi-Quellcode:
type
  TMinute = 0..59;
 
  TForm1 = class(TForm)
    Edit4: TEdit;
  private
    procedure SetMinQuaters (const Value : TMinute);
  public
    { Public-Deklarationen }
  end;

const
  ARRAY_MIN_QUATER : array [0..3] of string = ('00', '15', '30', '45');

procedure TForm1.SetMinQuaters (const Value : TMinute);
begin
  Edit4.Text := ARRAY_MIN_QUATER [Value div 15]
end;
Ein
Delphi-Quellcode:
SetMinQuaters (53)
liefert das gewünschte Ergebnis.

Gruß

himitsu 7. Okt 2013 23:09

AW: Uhrzeit Stunden und Minuten abrunden
 
einfache Mathematik:

Delphi-Quellcode:
var D: TDateTime; F: Integer;

F := MinsPerDay div 15; // Rundungsfaktor für 15 Minuten (oder / und Single, wenn keine ganze Zahl rauskommen würde)
D := Trunc(D * F) / F;
bzw.

Delphi-Quellcode:
var D: TDateTime;

D := Trunc(D * MinsPerDay / 15) * 15 / MinsPerDay;

klaus9 8. Okt 2013 21:38

AW: Uhrzeit Stunden und Minuten abrunden
 
Hallo,

ich habe es derzeit folgendermaßen gelößt.

Jetzt wird mir die Zeit in die Edit Felder eingefügt

Edit1 = Stunden und Edit2 = Minuten (abgezogen -15)
Edit3 = Stunden und Edit4 = Minuten (ohne abzug)

Ist natürlich nicht so wie es sein sollte..

Was müßte ich jetzt in diesem Code verändern, damit mir wenn z.B. 22:14 ist er richtig gesehen abrunden würde.

Also am besten würde es sein wie folgt.

Wir hätten jetzt realzeit 22:21Uhr und er geht 15Min zurück und nimmt nur 5 Minuten schritte, sprich Erebnis

22:21Uhr, -15 Minuten = 22:06 = Dieses abrunden auf 5ér Schritte = Endergebnis 22:05 diese in Edit1 und Edit 2 anzeigen und desweiteren Edit 3 und Edit 4 soll nun stehen 22:20Uhr statt der 22:21Uhr










Delphi-Quellcode:
unit zeittool;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    Button1: TButton;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Edit5: TEdit;
    Label5: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  a,b,s : integer;                                { Variablen-Vereinbarung }



begin
Edit1.Text := FormatDateTime('hh', now);
Edit4.Text := FormatDateTime('nn', now);
Edit3.Text := FormatDateTime('hh', now);
//Combobox10.Text := FormatDateTime('nn', now);
  a := StrToInt(Edit4.Text); b := StrToInt(Edit5.Text); { Eingabe               }

  s := a - b;                                     { Verarbeitung          }

  Edit2.Text := IntToStr(s);                         { Ausgabe               }

end;


procedure TForm1.FormCreate(Sender: TObject);
begin

end;

end.

Volker Z. 8. Okt 2013 22:29

AW: Uhrzeit Stunden und Minuten abrunden
 
Hallo,

bin mir zwar jetzt nicht sicher, ob ich Dein Anliegen richtig verstanden habe (und, ob die Zuordnung der Edits stimmt), Du kannst Dir mal folgendes versuchen:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  h, m, s, z : Word;

  function MinutesRounded (const Value : Integer) : Word;
  begin
    if Value < 5 then
      Result := 0
    else
      Result := 5 * (Value div 5)
  end;

  function FormatTime (const Hour, Minute : Word) : string;
  begin
    Result := Format ('%.2d:%.2d', [Hour, Minute])
  end;

begin
  DecodeTime (Now, h, m, s, z);

  Edit1.Text := FormatTime (h, m);
  Edit3.Text := FormatTime (h, MinutesRounded (m));
  Edit4.Text := FormatTime (h, MinutesRounded (m - 15));
end;
Gruß

bcvs 9. Okt 2013 06:39

AW: Uhrzeit Stunden und Minuten abrunden
 
Zitat:

Zitat von klaus9 (Beitrag 1231097)
Soll mir halt immer die 15 Minuten varianten anzeigen 15,30,45 und 00

Zitat:

Zitat von klaus9
Wir hätten jetzt realzeit 22:21Uhr und er geht 15Min zurück und nimmt nur 5 Minuten schritte

Was denn jetzt? 15 min oder 5 min?


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:20 Uhr.
Seite 1 von 3  1 23      

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