Wie rechne ich Zeiten um und verändere diese?



  • Hi,

    Ich suche eine Lösung zum ändern der ausgabe der Systemzeit, so dass sie z.B. die Zeit von England oder Amerika (Zeitzone bestimmbar) ausgeben kann.

    Die aktuelle Zeit hole ich mit dem Befehl "Time()".
    wie kann ich nun die Ausgabe abändern, dass am Ende z.B. statt 12:00:00 dann
    11:00:00 dasteht?



  • raptorxp,

    raptorxp schrieb:

    ...wie kann ich nun die Ausgabe abändern, dass am Ende z.B. statt 12:00:00 dann 11:00:00 dasteht?

    Time() liefert Dir einen speziellen TDateTime-Wert. Zu diesem kannst Du andere TDateTime-Werte hinzu addieren. Benutze einen der TDateTime-Konstruktoren, um die gewünschte Zeit-Differenz zu erstellen und addiere diese dazu bzw. subtrahiere diese von dem Ausgangswert.



  • Hallo dschensky

    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    	TDateTime	SysZeit, difEngland, nurZeit;
    	double		dZeit;
    
    	SysZeit	= Time();	// Rechnerzeit ohne Datum im Format TDateTime
    	SysZeit	= Now();	// Rechnerzeit mit Datum im Format TDateTime
    	// Eine Stunde im Format TDateTime
    	difEngland	= EncodeTime(1, 0, 0, 0);
    	// gewünschte Zeiten duch Subtraktion oder Addition ausrechnen
    	// und 24:00:00 beachten
    
    	// TDateTime ist ein double Wert. vor dem Komma Tage nach dem Komma
    	// Zeit
    	dZeit	= SysZeit;
    	SysZeit = dZeit;
    
    	// nur die Zeit aus dem TDateTimeFormat verenden
    	nurZeit	= SysZeit.CurrentTime();
    }
    

    Man kann auch aus dem System die UTC lesen diese umwandeln in TDateTime und einfach weiterrechnen. SystemTimeToDateTime konvertiert einen _SYSTEMTIME-Wert in ein Objekt des Typs TDateTime.

    Viel Erfolg
    Evi48



  • {
      TDateTime    SysZeit, difEngland;
      SysZeit    = Time();
      difEngland    = EncodeTime(1, 0, 0, 0);
      edtUK->Text=SysZeit-difEngland;
    }
    

    Das hat mir schon gereicht, vielen dank 👍


Anmelden zum Antworten