AGB  ·  Datenschutz  ·  Impressum  







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

Checken ob ein String wie TDate ist

Ein Thema von Daether · begonnen am 7. Jun 2006 · letzter Beitrag vom 8. Jun 2006
Antwort Antwort
Seite 1 von 2  1 2      
Daether

Registriert seit: 20. Mär 2003
10 Beiträge
 
#1

Checken ob ein String wie TDate ist

  Alt 7. Jun 2006, 12:27
Hi,
ich versuche momentan einen TerminKalender zu erstellen (einen einfachen). Ich habe ein Stringgrid in dem ich 3 Spalten habe für Datum, Uhrzeit und die Meldung.
Wenn nun diese Daten gespeichert werden, möchte ich, dass überprüft wird ob die Strings in der Datumsreihe ein Datum sind und die Strings in den Uhrzeitspalten auch einer Uhrzeit entsprechen.

Ein zweites Problem, dass ich habe, ist, dass ich nicht genau weiß, wie ich abfragen kann ob ein Datum, bzw. eine Uhrzeit schon "vorbei" ist. Also ob der 07.06.2006 schon war, ist oder kommt, gemessen an der Systemuhr.
MfG Daether
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: Checken ob ein String wie TDate ist

  Alt 7. Jun 2006, 12:32
tryStrToDate()
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Martin K
Martin K

Registriert seit: 20. Okt 2005
919 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Checken ob ein String wie TDate ist

  Alt 7. Jun 2006, 12:34
Zitat von Daether:
Ein zweites Problem, dass ich habe, ist, dass ich nicht genau weiß, wie ich abfragen kann ob ein Datum, bzw. eine Uhrzeit schon "vorbei" ist. Also ob der 07.06.2006 schon war, ist oder kommt, gemessen an der Systemuhr.
MfG Daether
Ich denke mal, das müsste so gehen:
Delphi-Quellcode:
var Zeit, Datum: String;
{...}

//Datum:
if StrToDate(Datum) = Date then
  ShowMessage('Heute!')
else
if StrToDate(Datum) < Date then
  ShowMessage('Schon vorbei!')
else
  ShowMessage('Kommt noch!');

//Zeit:
if StrToTime(Zeit) = GetTime then
  ShowMessage('Jetzt!')
else
if StrToTime(Zeit) < GetTime then
  ShowMessage('Schon vorbei!')
else
  ShowMessage('Kommt noch!');

//Edit:
Code verbessert!
Dann klappt's auch mit dem aktuellen Tag!


//Edit2:
Code vervollständigt mit Datum und Zeit!
Mit den Menschen ist es wie mit Computern -
es gibt Nullen und Einsen.
  Mit Zitat antworten Zitat
Daether

Registriert seit: 20. Mär 2003
10 Beiträge
 
#4

Re: Checken ob ein String wie TDate ist

  Alt 8. Jun 2006, 09:30
hi nochmal
das Prinzip verstehe ich dahinter nur verstehe ich nicht ganz wie ich GetTime erzeuge, bzw. deklariere.

Edit:
Date hat sich erledigt, das war einfach, nur verstehe ich weiterhin nicht wie ich das mit GetTime mache.
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Checken ob ein String wie TDate ist

  Alt 8. Jun 2006, 09:44
GetTime? Zum ermitteln der aktuellen Zeit gibt es die Funktion "Time()" und zum ermitteln des Datums die Funktion "Date()".

Im übrigen sollte man 2 Datumswerte nicht mit "=" vergleichen weil Datumswerte Float-Werte sind und da kann es durchaus passieren das die Floatwerte verschieden sind aber trotzdem das gleiche Datum darstellen.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von Martin K
Martin K

Registriert seit: 20. Okt 2005
919 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Checken ob ein String wie TDate ist

  Alt 8. Jun 2006, 16:36
Ob man Time oder GetTime für die aktuelle Uhrzeit verwendet, ist eigentlich egal.
Ich habe mich nur für GetTime entschieden, weil:
Zitat von Delphi-Hilfe:
Delphi-Syntax:

function Time: TDateTime;
function GetTime: TDateTime;

Beschreibung

Time und GetTime geben die aktuelle Uhrzeit als Wert des Typs TDateTime zurück. Die beiden Funktionen sind vollständig identisch.

Hinweis: Time führt zu einem Konlikt mit der gleichnamigen Xlib-Funktion. Verwenden Sie deshalb in Linux- und plattformübergreifendem Code GetTime.

Zitat von SirThornberry:
Im übrigen sollte man 2 Datumswerte nicht mit "=" vergleichen weil Datumswerte Float-Werte sind und da kann es durchaus passieren das die Floatwerte verschieden sind aber trotzdem das gleiche Datum darstellen.
Hm...
Ich dachte, gleiches Datum = gleicher Float-Wert.
Aber wie überprüft man denn sonst, ob zwei Datumsangaben identisch sind ?
Mit den Menschen ist es wie mit Computern -
es gibt Nullen und Einsen.
  Mit Zitat antworten Zitat
TBx
(Administrator)

Registriert seit: 13. Jul 2005
Ort: Stadthagen
1.891 Beiträge
 
Delphi 12 Athens
 
#7

Re: Checken ob ein String wie TDate ist

  Alt 8. Jun 2006, 16:55
Zitat:
Ich dachte, gleiches Datum = gleicher Float-Wert.
Aber wie überprüft man denn sonst, ob zwei Datumsangaben identisch sind ?
nicht ganz.
Bei gleichem Datum sind die Ganzzahligen Anteile gleich, also alles, was vor dem Dezimalkomma steht.

Der Vergleich ist dann einfach:
Delphi-Quellcode:
if trunc (Date1) = trunc (Date2) then
  showmessage ('Datum identisch!');
Älteres oder jüngeres Datum bekommt man analog dazu.

Hope it helps

onlinekater
Thomas Breitkreuz
  Mit Zitat antworten Zitat
Benutzerbild von Martin K
Martin K

Registriert seit: 20. Okt 2005
919 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: Checken ob ein String wie TDate ist

  Alt 8. Jun 2006, 17:02
Zitat von onlinekater:
Bei gleichem Datum sind die Ganzzahligen Anteile gleich, also alles, was vor dem Dezimalkomma steht.
Ja, das ist mir schon klar.

Deswegen habe ich ja auch deisen Code:
if StrToDate(Datum) = Date then Denn StrToDate liefert NUR das Datum (ohne Zeit, also Zeit = 0:00) zurück, genauso wie die Funktion Date auch NUR das aktuelle Datum ohne die Zeitangabe zurückliefert.
Beides also ganze Zahlen

Da brauch man dann auch kein trunc mehr
Mit den Menschen ist es wie mit Computern -
es gibt Nullen und Einsen.
  Mit Zitat antworten Zitat
TBx
(Administrator)

Registriert seit: 13. Jul 2005
Ort: Stadthagen
1.891 Beiträge
 
Delphi 12 Athens
 
#9

Re: Checken ob ein String wie TDate ist

  Alt 8. Jun 2006, 17:09
@Martin K: Deine Vorgehensweise des Vergleiches von StrToDate und Date ist schon ok, nur die Aussage
Zitat:
gleiches Datum = gleicher Floatwert
ist nicht korrekt, denn es gibt durchaus verschiedenen Floatwerte, die zum selben Datum passen.

Ich denke, das war ein allgemeiner Hinweis vonSir Thornberry.

btw die Aussage aus gleichen Floatwerten folgt gleiches Datum ist dagenen 100%ig richtig
Gruß

onlinekater
Thomas Breitkreuz
  Mit Zitat antworten Zitat
Benutzerbild von Martin K
Martin K

Registriert seit: 20. Okt 2005
919 Beiträge
 
Turbo Delphi für Win32
 
#10

Re: Checken ob ein String wie TDate ist

  Alt 8. Jun 2006, 17:19
Zitat von onlinekater:
@Martin K: Deine Vorgehensweise des Vergleiches von StrToDate und Date ist schon ok, nur die Aussage
Zitat:
gleiches Datum = gleicher Floatwert
ist nicht korrekt, denn es gibt durchaus verschiedenen Floatwerte, die zum selben Datum passen.
Na gut, ich geb's ja zu.
Allgemein ist die Aussage nicht richtig.

Aber
Zitat von onlinekater:
Ich denke, das war ein allgemeiner Hinweis vonSir Thornberry.
das denke ich nicht, da die Aussage sich auf meinen Code bezogen hat (dachte ich zumindest):
Zitat von SirThornberry:
Im übrigen sollte man 2 Datumswerte nicht mit "=" vergleichen weil Datumswerte Float-Werte sind und da kann es durchaus passieren das die Floatwerte verschieden sind aber trotzdem das gleiche Datum darstellen.
Also nach wie vor, als Antowort auf die Problemstellung aus dem ersten Beitrag:
Zitat von Daether:
Ein zweites Problem, dass ich habe, ist, dass ich nicht genau weiß, wie ich abfragen kann ob ein Datum, bzw. eine Uhrzeit schon "vorbei" ist. Also ob der 07.06.2006 schon war, ist oder kommt, gemessen an der Systemuhr.
MfG Daether
ist mein Code aus Beitrag #3 die Lösung.
Habe diesen Code mit mehreren Zeitwerten bzw. Datumswerten getestet und es funktioniert!

Ich möchte nur noch darauf hinweisen, dass die Überprüfung auf die aktuelle Uhrzeit nur für eine Sekunde pro Tag erfüllt ist,
wobei die Überprüfung auf das aktuelle Datum für einen ganzen Tag erfüllt ist.
So war es ja auch von Daether gedacht, nehme ich mal an.

MfG,
Martin
Mit den Menschen ist es wie mit Computern -
es gibt Nullen und Einsen.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 17:20 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