AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language *UPDATE* ddd (Dayname) vergleichen der Date() Funktion
Thema durchsuchen
Ansicht
Themen-Optionen

*UPDATE* ddd (Dayname) vergleichen der Date() Funktion

Ein Thema von Mike_ · begonnen am 2. Feb 2011 · letzter Beitrag vom 2. Feb 2011
Antwort Antwort
Mike_

Registriert seit: 26. Mär 2008
98 Beiträge
 
Delphi 2007 Professional
 
#1

*UPDATE* ddd (Dayname) vergleichen der Date() Funktion

  Alt 2. Feb 2011, 14:59
Delphi-Version: 2007
Hallo liebe Delphianer,

ich benötige einen Datumsvergleich, wobei ich abfrage ob Mo/Di/Mi/Do/Fr/Sa/So ist.


Die SuFu hat mir sehr weitergeholfen, so dass ich u.a. auf folgendes gestoßen bin:
http://www.delphipraxis.net/28779-da...rgleichen.html

Allerdings fand ich keine Einträge wo der Wochentagsname verglichen wird.

Derzeitiger Stand:

Delphi-Quellcode:
curr_date := FormatDateTime('ddd', date); //Liefer Mo/Di etc zurück
if curr_date = 'Dithen [...]
Meiner Meinung nach ist das aber eher schlecht geeignet, da ich 1.) nicht weiß ob wirklich Mo/Di/Mi angezeigt wird oder Mon/Die/Mi/Do/Fr/So/Sa (Im Link von oben steht z.B. für Montag Mon)


Also zu den 2 Fragen:

1.) Kann ich den Wochentag als Index holen (z.B. So = 0, Mo =1 etc) ?
2.) Kann man den Wochentag und die Uhrzeit in eine Variable holen UND vergleichen ?
(z.B. curr_date = 'Di' AND curr_date between (08:00, 20:00)

Danke im voraus fürs durchlesen und "Kopf machen"

Geändert von Mike_ ( 2. Feb 2011 um 16:13 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.541 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: ddd (Dayname) vergleichen der Date() Funktion

  Alt 2. Feb 2011, 15:11
Zu 1) DateUtils.DayOfTheWeek
Zu 2) habe ich leider nicht verstanden
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
generic

Registriert seit: 24. Mär 2004
Ort: bei Hannover
2.415 Beiträge
 
Delphi XE5 Professional
 
#3

AW: ddd (Dayname) vergleichen der Date() Funktion

  Alt 2. Feb 2011, 15:16
Zu 1)
Es gibt DayOfWeek:
function DayOfWeek(const DateTime: TDateTime): Word;

Zu 2)
Der Uhrzeitanteil in TDatetime ist in dem Nachkommateil gespeichert.
Also den Vorkommateil abschneiden (mit Frac) und dann mit der Uhrzeit vergleichen.

Gerade gefunden:
function TimeOf(const AValue: TDateTime): TDateTime;
Nutzt aber die besagte Frac()

gibt da noch HoursBetween, MinutesBetween.
Coding BOTT - Video Tutorials rund um das Programmieren - https://www.youtube.com/@codingbott

Geändert von generic ( 2. Feb 2011 um 15:28 Uhr)
  Mit Zitat antworten Zitat
Mike_

Registriert seit: 26. Mär 2008
98 Beiträge
 
Delphi 2007 Professional
 
#4

AW: ddd (Dayname) vergleichen der Date() Funktion

  Alt 2. Feb 2011, 15:48
Zu 1)
Es gibt DayOfWeek:
function DayOfWeek(const DateTime: TDateTime): Word;

Zu 2)
Der Uhrzeitanteil in TDatetime ist in dem Nachkommateil gespeichert.
Also den Vorkommateil abschneiden (mit Frac) und dann mit der Uhrzeit vergleichen.

Gerade gefunden:
function TimeOf(const AValue: TDateTime): TDateTime;
Nutzt aber die besagte Frac()

gibt da noch HoursBetween, MinutesBetween.
Super genau das brauchte ich

Gibt es die Möglichkeit einer If Abfrage mehrere Abfragewerte zuzuordnen ohne das Statement immer wiederholen zu müssen ?

Beispiel:

Bad:
if dayofweek_curr = 1 or dayofweek_curr = 2
[...]


Good:
if dayofweek_curr = (1 or 2)


Das "Good" klappt aber leider nicht... gibt es solch eine Möglichkeit ?


EDIT://

dayofweek_curr := DayOfWeek(date);

if (dayofweek_curr = 3 OR 4 OR 5 OR 6) then ...

klappt auch nicht in der If Abfrage...

Geändert von Mike_ ( 2. Feb 2011 um 15:53 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.541 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: ddd (Dayname) vergleichen der Date() Funktion

  Alt 2. Feb 2011, 15:51
Delphi-Quellcode:
case dayofweek_curr of
  1,2: Machwas;
    3: MachWasAnderes;
end;
[edit] Du weißt aber, was beim Verodern herauskommt? 3 OR 4 OR 5 OR 6 = 7 [/edit]
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

Geändert von DeddyH ( 2. Feb 2011 um 15:57 Uhr)
  Mit Zitat antworten Zitat
Mike_

Registriert seit: 26. Mär 2008
98 Beiträge
 
Delphi 2007 Professional
 
#6

AW: ddd (Dayname) vergleichen der Date() Funktion

  Alt 2. Feb 2011, 16:00
Delphi-Quellcode:
case dayofweek_curr of
  1,2: Machwas;
    3: MachWasAnderes;
end;
[edit] Du weißt aber, was beim Verodern herauskommt? 3 OR 4 OR 5 OR 6 = 7 [/edit]
Das kommt davon, wenn man zu "verifft" ist

Vergisst man die Hälfte...


___

HoursBetween war nicht gemeint sondern die Methode um die jetzige Uhrzeit zu überprüfen z.B.

if time < 08:00:00
bin gerad fleißig am googlen gibt da ja einiges..

Geändert von Mike_ ( 2. Feb 2011 um 16:12 Uhr)
  Mit Zitat antworten Zitat
generic

Registriert seit: 24. Mär 2004
Ort: bei Hannover
2.415 Beiträge
 
Delphi XE5 Professional
 
#7

AW: *UPDATE* ddd (Dayname) vergleichen der Date() Funktion

  Alt 2. Feb 2011, 16:33
Es gibt den "in" Befehl.


if var in [1..3,6] then ist var zwischen 1 und 3 oder 6


Das ist gefährlich:
if dayofweek_curr = (1 or 2)
Denn 1 or 2 ist eine Binäroperation welche 3 ergibt.

Da steht also:
if dayofweek_curr = 3
Coding BOTT - Video Tutorials rund um das Programmieren - https://www.youtube.com/@codingbott

Geändert von generic ( 2. Feb 2011 um 16:36 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.541 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: *UPDATE* ddd (Dayname) vergleichen der Date() Funktion

  Alt 2. Feb 2011, 16:41
Und für die Uhrzeit kannst Du DecodeTime nehmen und schauen, ob Hour < 8 ist.
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
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 14:17 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