Easter
Re: Easter
Code: Select all
c = a/100
n = a - [19×(a/19)]
k = (c - 17)/25
i = c - c/4 - [(c-k)/3] +(19×n) + 15
i = i - [30×(i/30)]
i = i - {(i/28)×[1-(i/28)]×[29/(i+1)]×[(21-n)/11]}
j = a + a/4 + i + 2 -c + c/4
j = j - [7×(j/7)]
z = i - j
m = 3 + [(z+40)/44]
d = z + 28 - [31×(m/4)]
m= month
d= day
[/code]
Regards,
André Dutheil
FWH 13.04 HB 3.2 BCC 5.82 MinGW 4.5.2 MSVS 10
André Dutheil
FWH 13.04 HB 3.2 BCC 5.82 MinGW 4.5.2 MSVS 10
-
- Posts: 824
- Joined: Thu Oct 13, 2005 7:39 am
- Location: Germany
Re: Easter
you can use the function FT_Easter() from libnf.lib
Code: Select all
dEaster := FT_Easter (Year(dDate))
kind regards
Stefan
Stefan
Re: Easter
Stefan,
I used this function, but with some changes because of a formatted RETURN-string:
Best Regards
Uwe
I used this function, but with some changes because of a formatted RETURN-string:
Code: Select all
SET CENTURY ON
//SET DATE AMERICAN
//MsgAlert( EASTER( 2013, "A", .T. ), "Amer. Easter 2013" )
//SET DATE ANSI
//MsgAlert( EASTER( 2013, "N", .T. ), "Ansi Easter 2013" )
//SET DATE BRITISH
//MsgAlert( EASTER( 2013, "B", .T. ), "English Easter 2013" )
//SET DATE FRENCH
//MsgAlert( EASTER( 2013, "F", .T. ), "French Easter 2013" )
//SET DATE GERMAN
//MsgAlert( EASTER( 2013, "G", .T. ), "German Ostern 2013" )
SET DATE ITALIAN
MsgAlert( EASTER( 2013, "I", .T. ), "Italien Easter 2013" )
//SET DATE JAPAN
//MsgAlert( EASTER( 2013, "J", .T. ), "Japan Easter 2013" )
//SET DATE USA
//MsgAlert( EASTER( 2013, "U", .T. ), "USA Easter 2013" )
/*
SYNTAX
FT_EASTER( <xYear> ) -> dEdate
ARGUMENTS
xYear can be a character, date or numeric describing the year
for which you wish to receive the date of Easter.
RETURNS
The actual date that Easter occurs.
DESCRIPTION
Returns the date of Easter for any year after 1582 up to Clipper's
limit which the manual states is 9999, but the Guide agrees with
the actual imposed limit of 2999.
EXAMPLES
dEdate := EASTER( 1990 ) returns 04/15/1990
*/
FUNCTION EASTER (nYear, cNat, lCent )
local nGold, nCent, nCorx, nCorz, nSunday, nEpact, nMoon,;
nMonth := 0, nDay := 0
// --------------------------------
// NOTE: __SetCentury() is internal
// --------------------------------
IF VALTYPE (nYear) == "C"
nYear = VAL(nYear)
ENDIF
IF VALTYPE (nYear) == "D"
nYear = YEAR(nYear)
ENDIF
IF VALTYPE (nYear) == "N"
IF nYear > 1582
// <<nGold>> is Golden number of the year in the 19 year Metonic cycle
nGold = nYear % 19 + 1
// <<nCent>> is Century
nCent = INT (nYear / 100) + 1
// Corrections:
// <<nCorx>> is the no. of years in which leap-year was dropped in order
// to keep step with the sun
nCorx = INT ((3 * nCent) / 4 - 12)
// <<nCorz>> is a special correction to synchronize Easter with the moon's
// orbit.
nCorz = INT ((8 * nCent + 5) / 25 - 5)
// <<nSunday>> Find Sunday
nSunday = INT ((5 * nYear) / 4 - nCorx - 10)
// Set Epact <<nEpact>> (specifies occurance of a full moon)
nEpact = INT ((11 * nGold + 20 + nCorz - nCorx) % 30)
IF nEpact < 0
nEpact += 30
ENDIF
IF ((nEpact = 25) .AND. (nGold > 11)) .OR. (nEpact = 24)
++nEpact
ENDIF
// Find full moon - the <<nMoon>>th of MARCH is a "calendar" full moon
nMoon = 44 - nEpact
IF nMoon < 21
nMoon += 30
ENDIF
// Advance to Sunday
nMoon = INT (nMoon + 7 - ((nSunday + nMoon) % 7))
// Get Month and Day
IF nMoon > 31
nMonth = 4
nDay = nMoon - 31
ELSE
nMonth = 3
nDay = nMoon
ENDIF
ENDIF
ELSE
nYear = 0
ENDIF
SET CENTURY (lCent)
IF cNat = "A" // American
RETURN CTOD ( RIGHT ("00"+LTRIM (STR (nMonth)),2) + "/" +;
RIGHT ("00"+LTRIM (STR (INT (nDay))) ,2) + "/" + ;
STR (nYear,4))
ENDIF
IF cNat = "N" // Ansi
RETURN CTOD ( STR (nYear,4) + "." +;
RIGHT ("00"+LTRIM (STR (nMonth)),2) + "." +;
RIGHT ("00"+LTRIM (STR (INT (nDay))) ,2) )
ENDIF
IF cNat = "B" // British
RETURN CTOD ( RIGHT ("00"+LTRIM (STR (INT (nDay))) ,2) + "/" + ;
RIGHT ("00"+LTRIM (STR (nMonth)),2) + "/" +;
STR (nYear,4) )
ENDIF
IF cNat = "F" // French
RETURN CTOD ( RIGHT ("00"+LTRIM (STR (INT (nDay))) ,2) + "/" + ;
RIGHT ("00"+LTRIM (STR (nMonth)),2) + "/" +;
STR (nYear,4) )
ENDIF
IF cNat = "G" // German
RETURN CTOD ( RIGHT ("00"+LTRIM (STR (INT (nDay))) ,2) + "." + ;
RIGHT ("00"+LTRIM (STR (nMonth)),2) + "." +;
STR (nYear,4) )
ENDIF
IF cNat = "I" // Italien
RETURN CTOD ( RIGHT ("00"+LTRIM (STR (INT (nDay))) ,2) + "-" + ;
RIGHT ("00"+LTRIM (STR (nMonth)),2) + "-" +;
STR (nYear,4) )
ENDIF
IF cNat = "J" // Japan
RETURN CTOD ( STR (nYear,4) + "/" +;
RIGHT ("00"+LTRIM (STR (nMonth)),2) + "/" +;
RIGHT ("00"+LTRIM (STR (INT (nDay))) ,2) )
ENDIF
IF cNat = "U" // USA
RETURN CTOD ( RIGHT ("00"+LTRIM (STR (nMonth)),2) + "-" +;
RIGHT ("00"+LTRIM (STR (INT (nDay))) ,2) + "-" + ;
STR (nYear,4))
ENDIF
Uwe
Since 1995 ( the first release of FW 1.9 )
i work with FW.
If you have any questions about special functions, maybe i can help.
i work with FW.
If you have any questions about special functions, maybe i can help.
Re: Easter
Silvio,
use this table:
2010 04. April
2011 24. April
2012 08. April
2013 31. März
2014 20. April
2015 05. April
2016 27. März
2017 16. April
2018 01. April
2019 21. April
2020 12. April
2021 04. April
2022 17. April
2023 09. April
2024 31. März
2025 20. April
2026 05. April
2027 28. März
2028 16. April
2029 01. April
2030 21. April
Best regards,
Otto
use this table:
2010 04. April
2011 24. April
2012 08. April
2013 31. März
2014 20. April
2015 05. April
2016 27. März
2017 16. April
2018 01. April
2019 21. April
2020 12. April
2021 04. April
2022 17. April
2023 09. April
2024 31. März
2025 20. April
2026 05. April
2027 28. März
2028 16. April
2029 01. April
2030 21. April
Best regards,
Otto
********************************************************************
mod harbour - Vamos a la conquista de la Web
modharbour.org
********************************************************************
mod harbour - Vamos a la conquista de la Web
modharbour.org
********************************************************************
Re: Easter
thanks friends to all
I made TimeCard for Employes of a Farm and I 'm thinking to create a xbrowse table
with the first column ( Number/name of day) then I with change color when the day is sunday or insert also all national holidays as Easter or xmax
for sample
I made this for dicember you can see the day 25 and 26 in color
I use a string for the first column ( sample: 25 Ma or 26 Me)
cTesto:= oBrw:aRow[ 1 ]
...
CASE nMese=12 //dicember
// 8 dic
// 25 dic
// 26 dic
IF LEFT(alltrim(ctesto),2)="8 " .OR. ;
LEFT(alltrim(ctesto),2)="25" .OR. LEFT(alltrim(ctesto),2)="26";
.OR. RIGHT(ctesto,2)="Do"
nColor :=Color_Rosa
else
nColor := GetSysColor( 5 )
ENDIF
....
and I wish found also Easter day to change the color...
I made TimeCard for Employes of a Farm and I 'm thinking to create a xbrowse table
with the first column ( Number/name of day) then I with change color when the day is sunday or insert also all national holidays as Easter or xmax
for sample
I made this for dicember you can see the day 25 and 26 in color
I use a string for the first column ( sample: 25 Ma or 26 Me)
cTesto:= oBrw:aRow[ 1 ]
...
CASE nMese=12 //dicember
// 8 dic
// 25 dic
// 26 dic
IF LEFT(alltrim(ctesto),2)="8 " .OR. ;
LEFT(alltrim(ctesto),2)="25" .OR. LEFT(alltrim(ctesto),2)="26";
.OR. RIGHT(ctesto,2)="Do"
nColor :=Color_Rosa
else
nColor := GetSysColor( 5 )
ENDIF
....
and I wish found also Easter day to change the color...
Re: Easter
I need the number of Month when is the easter and the number od the day
For the 2013
sample : nmese:= 3
cDay:="31"
For the 2013
sample : nmese:= 3
cDay:="31"
Re: Easter
Silvio,
the given Function returns all Infos You need :
SET DATE ITALIAN
dEastern := EASTER( 2013, "I", .T. )
MsgAlert( "Date : " + DTOC ( dEastern ) + CRLF + ;
"Day : " + ALLTRIM(STR(DAY( dEastern ) ) ) + CRLF + ;
"Month : " + ALLTRIM(STR(MONTH( dEastern ) ) ), "Italien Easter 2013" )
Best Regards
Uwe
the given Function returns all Infos You need :
SET DATE ITALIAN
dEastern := EASTER( 2013, "I", .T. )
MsgAlert( "Date : " + DTOC ( dEastern ) + CRLF + ;
"Day : " + ALLTRIM(STR(DAY( dEastern ) ) ) + CRLF + ;
"Month : " + ALLTRIM(STR(MONTH( dEastern ) ) ), "Italien Easter 2013" )
Best Regards
Uwe
Since 1995 ( the first release of FW 1.9 )
i work with FW.
If you have any questions about special functions, maybe i can help.
i work with FW.
If you have any questions about special functions, maybe i can help.