Español
Fuente/ Codesnippets

Berechnungen Erwünscht Kalender Mitwirkung

 

Michael
Wodrich
[size=18:9a05d71d8c]Kalender-Berechnungen:[/size:9a05d71d8c]
(geschrieben en XProfan; muß evtl. una wenig angepaßt voluntad para frühere Versionen)

Lo son sicherlich viele Möglichkeiten para el Verwaltung de Kalenderdaten.
Hier voluntad algunos Routinen vorgestellt, el una LongInt-Variable a Speicherung benutzen.

Das dies posible es zeige Yo hier:

2147483647 maximaler positiver LongInt-Valor
..CCYYMMDD el Datum se así gespeichert
..hhmmsscc el Tiempo se así gespeichert

CC...... el Jahrhundert-Angabe (Century)
..YY.... el Jahr
....MM.. el Monat
......DD el Tag

hh...... el Stunde
..mm.... el Minute
....ss.. el Sekunde
......cc el Hundertstel-Sekunde (Centi)


El Profano-internen Datum- y Zeitfunktionen puede hiermit bien ergänzt voluntad.

El folgenden Routinen bauen Datum y Tiempo zusammen:
KompilierenMarcaSeparación
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:
KompilierenMarcaSeparación
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>
Zerlegen des Datums en seine Einzelteile (Parámetro es el LongInt-Datum):
KompilierenMarcaSeparación
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>
Zerlegen el Tiempo en ihre Einzelteile (Parámetro es el LongInt-Valor):
KompilierenMarcaSeparación
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>
Datum- y Tiempo-Vergleiche:
(d1 - Datum des 1. Wertes)
(t1 - Tiempo des 1. Wertes)
(d2 - Datum des 2. Wertes)
(t2 - Tiempo des 2. Wertes)
KompilierenMarcaSeparación
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))
Das aktuelle Datum serviert Profano ya mundgerecht:
KompilierenMarcaSeparaciónEn aktuellen Tiempo muß uno ya una wenig mehr nachhelfen:
KompilierenMarcaSeparaciónIst el angegebene Jahr una Schaltjahr?
Lo voluntad auch Jahre antes Kalenderreform korrekt geprüft:
KompilierenMarcaSeparación
Proc IsLeapYear

    Prüft, si el angegebene Jahr una Schaltjahr es.
    Lo muß auch el Jahrhundert angegeben voluntad, porque "80" meint "80 A.D."
    Parámetros Year%
    Declarar Erg%

    If Year% > 1582

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

    Más

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

    EndIf

    Volver Erg%

ENDPROC

Ermittelt el Wochentag:
KompilierenMarcaSeparación
Proc DayOfWeek

    Liefert el Wochentag.
    0-Sonntag, 1-Montag, ..., 6-Samstag
    Parámetros Date&
    Declarar Year%,Month%,Day&
    Year% = @GetFullYear(Date&)
    Month% = @GetMonth(Date&)
    Day& = @GetDay(Date&)

    If Month% > 2

        Sub Month%,2

    Más

        Add Month%,10
        Dec Year%

    EndIf

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

ENDPROC


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



Spitze!, wir kriege Yo después de el Principio una Datums-Distance hin, welche el número el Jahre,Monate,Tage zwischen zwei Datumsangaben zurückliefert?
 
05.06.2004  
 




Michael
Wodrich
por Umrechnung en el Julianische Tageszahl. El es eigentlich una Float-Zahl. Yo quería el Ganze en LongInt behalten, aber como es el Wurm drin. Tiempo sehen, Yo poste lo al Nachmittag veces.
Jetzt tener Yo desafortunadamente no Streichhölzer mehr, a Augen aufzuhalten...

a entonces
Michael Wodrich
 
Programmieren, das spannendste Detektivspiel der Welt.
07.06.2004  
 




Sven
Bader
Yo voluntad eigentlich auch sólo el Distanz zweiter Daten Tal vez el para jemanden interessant, el número el Tage uno Monats, Schaltjahrprüfung para Februar es auch esta.

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

Aufruf: imprimir Tage(02,2004)
Edición: 29 Februar 2004 hatte 29 Tage
 
12.06.2006  
 



Zum Quelltext


Título del Tema, max. 100 Signo.
 

Systemprofile:

Kein Systemprofil creado. [anlegen]

XProfan:

 Contribución  Font  Smilies  ▼ 

Bitte registro en una Contribución a verfassen.
 

Tema opciones

3.928 Views

Untitledvor 0 min.
Ernst07.10.2016
Georg Teles21.01.2015
Michael Wodrich21.02.2014
Pedro Miguel26.08.2013
Más...

Themeninformationen



Admins  |  AGB  |  Applications  |  Autores  |  Chat  |  Política de Privacidad  |  Descargar  |  Entrance  |  Ayuda  |  Merchantportal  |  Pie de imprenta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Juegos  |  Búsqueda  |  Support

Ein Projekt aller XProfan, el lo son!


Mi XProfan
Privado Noticias
Eigenes Ablageforum
Temas-Merkliste
Eigene Beiträge
Eigene Temas
Zwischenablage
Cancelar
 Deutsch English Français Español Italia
Traducciones

Política de Privacidad


Wir uso Cookies sólo como Session-Cookies wegen el technischen Notwendigkeit y en uns hay no Cookies de Drittanbietern.

Wenn du hier en unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung de Informationen en unseren Cookies en XProfan.Net a.

Weitere Informationen a unseren Cookies y dazu, como du el Kontrolle darüber behältst, findest du en unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Yo möchte no Cookie