Français
Source/ Codesnippets

Berechnungen Erwünscht le calendrier Mitwirkung

 

Michael
Wodrich
[size=18:9a05d71d8c]le calendrier-Berechnungen:[/size:9a05d71d8c]
(geschrieben dans XProfan; doit peut-être. un peu ajusté volonté pour frühere Versionen)

il y a sicherlich viele Opportunités pour qui Verwaltung de Kalenderdaten.
ici volonté quelques Routinen vorgestellt, qui une LongInt-Variable zur Speicherung benutzen.

cela ca possible ist zeige je ici:

2147483647 maximaler positiver LongInt-Wert
..CCYYMMDD cela date wird so gespeichert
..hhmmsscc qui Zeit wird so gespeichert

CC...... qui siècle-Angabe (Century)
..YY.... cela l'an
....MM.. qui mois
......DD qui journée

hh...... qui heure
..mm.... qui minute
....ss.. qui seconde
......cc qui Hundertstel-seconde (Centi)


qui Profan-internen date- et Zeitfunktionen peut hiermit bien ergänzt volonté.

qui folgenden Routinen construire date et Zeit zusammen:
KompilierenMarqueSéparation
Def MakeFullDate(3) (@&(3)*10000)+(@&(2)*100)+@&(1)
Def MakeDate(4)     (@&(3)*1000000)+(@&(4)*10000)+(@&(2)*100)+@&(1)
Def MakeTime(4)     (@&(1)*1000000)+(@&(2)*10000)+(@&(3)*100)+@&(4)re>
Syntax:
KompilierenMarqueSéparation
Datum& = MakeFullDate(Tag&,Monat&,Jahr&) z.B.: dat& = MakeFullDate(4,6,2004)
Datum& = MakeDate(Tag&,Monat&,Jahrhundert&,Jahr&) z.B.: dat& = MakeDate(4,6,20,04)
Zeit& = MakeTime(Stunde&,Minute&,Sekunde&,Hundertstel&) z.B.: tim& = MakeTime(23,30,0,40)re>
décomposer des Datums dans sa Einzelteile (paramètre ist cela LongInt-date):
KompilierenMarqueSéparation
Def GetFullYear(1) @Int(@&(1) / 10000)
Def GetCentury(1)  @Int(@&(1) / 1000000)
Def GetYear(1)     @Int((@&(1) mod 1000000) / 10000)
Def GetMonth(1)    @Int((@&(1) mod 10000) / 100)
Def GetDay(1)      @Int(@&(1) mod 100)/pre>
décomposer qui Zeit dans ses Einzelteile (paramètre ist qui LongInt-Wert):
KompilierenMarqueSéparation
Def GetHour(1)     @Int(@&(1) / 1000000)
Def GetMinute(1)   @Int((@&(1) mod 1000000) / 10000)
Def GetSecond(1)   @Int((@&(1) mod 10000) / 100)
Def GetCenti(1)    @Int(@&(1) mod 100)pre>
date- et Zeit-Vergleiche:
(d1 - date des 1. Wertes)
(t1 - Zeit des 1. Wertes)
(d2 - date des 2. Wertes)
(t2 - Zeit des 2. Wertes)
KompilierenMarqueSéparation
Def Time_EQ(d1,t1,d2,t2)  (@&(1) = @&(3)) and (@&(2) = @&(4))
Def Time_GE(d1,t1,d2,t2)  (@&(1) > @&(3)) or ((@&(1) = @&(3)) and (@&(2) >= @&(4)))
Def Time_GT(d1,t1,d2,t2)  (@&(1) > @&(3)) or ((@&(1) = @&(3)) and (@&(2) > @&(4)))
Def Time_LE(d1,t1,d2,t2)  (@&(1) < @&(3)) or ((@&(1) = @&(3)) and (@&(2) <= @&(4)))
Def Time_LT(d1,t1,d2,t2)  (@&(1) < @&(3)) or ((@&(1) = @&(3)) and (@&(2) < @&(4)))
Def Time_NEQ(d1,t1,d2,t2) (@&(1) <> @&(3)) or (@&(2) <> @&(4))
cela aktuelle date serviert Profan déjà mundgerecht:
KompilierenMarqueSéparationchez qui aktuellen Zeit doit on déjà un peu plus nachhelfen:
KompilierenMarqueSéparationIst cela angegebene l'an un Schaltjahr?
Es volonté aussi Jahre avant qui Kalenderreform korrekt geprüft:
KompilierenMarqueSéparation
Proc IsLeapYear

    Prüft, si cela angegebene l'an un Schaltjahr est.
    Es doit aussi cela siècle angegeben volonté, car "80" meint "80 A.D."
    Paramètres Year%
    Déclarer Erg%

    Si Year% > 1582

        Erg% = (((Year% mod 4)=0) and ((Year% mod 100)<>0)) or ((Year% mod 400)=0)

    D'autre

        Erg% = (((Year% mod 4)=0) and ((Year% mod 100)<>0))

    EndIf

    Retour Erg%

ENDPROC

Ermittelt den Wochentag:
KompilierenMarqueSéparation
Proc DayOfWeek

    Liefert den Wochentag.
    0-dimanche, 1-lundi, ..., 6-samedi
    Paramètres Date&
    Déclarer Year%,Month%,Day&
    Year% = @GetFullYear(Date&)
    Month% = @GetMonth(Date&)
    Day& = @GetDay(Date&)

    Si Month% > 2

        Sous Month%,2

    D'autre

        Ajouter Month%,10
        Décembre Year%

    EndIf

    Day& = ((13 * Month% - 1) / 5) + Day% + (Year% mod 100) + ((Year% mod 100) / 4) + ((Year% / 100) / 4) - 2 * (Year% / 100) + 77
    Retour (Day& mod 7)

ENDPROC


MfG
Michael Wodrich
 
Programmieren, das spannendste Detektivspiel der Welt.
05.06.2004  
 



Spitze!, wir kriege je pour dem Prinzip une Datums-Distance hin, quelle le nombre qui Jahre,Monate,Tage entre deux Datumsangaben zurückliefert?
 
05.06.2004  
 




Michael
Wodrich
par change dans qui Julianische Tageszahl. qui ist eigentlich une Float-numéro. je voulais cela Ganze dans LongInt behalten, mais voilà qui Wurm drin. la fois voyons, je Poste cela Ding am l'après-midi la fois.
maintenant hab je malheureusement aucun Streichhölzer plus, à Augen aufzuhalten...

jusqu'à ensuite
Michael Wodrich
 
Programmieren, das spannendste Detektivspiel der Welt.
07.06.2004  
 




Sven
Bader
je veux eigentlich aussi seulement qui Distanz zweiter données Peut-être cela pour quelqu'un intéressant, le nombre qui Tage eines Monats, Schaltjahrprüfung pour février ist aussi dabei.

Def Tage(2) int(28+val(mid$(303232332323,&(1),1))+si((&(1)=2) & (&(2) MOD 4 = 0),1,0))

Aufruf: imprimer Tage(02,2004)
Ausgabe: 29 février 2004 hatte 29 Tage
 
12.06.2006  
 



Zum Quelltext


Topictitle, max. 100 marque.
 

Systemprofile:

ne...aucune Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

s'il te plaît s'inscrire um une Beitrag trop verfassen.
 

Options du sujet

3.835 Views

Untitledvor 0 min.
Ernst07.10.2016
Georg Teles21.01.2015
Michael Wodrich21.02.2014
Pedro Miguel26.08.2013
plus...

Themeninformationen



Admins  |  AGB  |  Applications  |  Auteurs  |  Chat  |  protection des données  |  Télécharger  |  Entrance  |  Aider  |  Merchantportal  |  Empreinte  |  Mart  |  Interfaces  |  SDK  |  Services  |  Jeux  |  cherche  |  Support

un projet aller XProfaner, qui il y a!


Mon XProfan
Privé Nouvelles
Eigenes Ablageforum
Sujets-La liste de voeux
Eigene Posts
Eigene Sujets
Zwischenablage
Annuler
 Deutsch English Français Español Italia
Traductions

protection des données


Wir verwenden Cookies seulement comme Session-Cookies à cause de qui technischen Notwendigkeit et chez uns gibt es aucun Cookies de Drittanbietern.

si du ici sur unsere Webseite klickst ou bien navigierst, stimmst du unserer Erfassung de Informationen dans unseren Cookies sur XProfan.Net trop.

Weitere Informationen trop unseren Cookies et en supplément, comment du qui Kontrolle par-dessus behältst, findest du dans unserer nachfolgenden Datenschutzerklärung.


d'accordDatenschutzerklärung
je voudrais keinen Cookie