YearPlus ( TheDate )
Add one year to a given date
Average rating: 4.3 (35 votes) Log in to vote
Stefan Pusch KG
YearPlus ( 732735 )
YearPlus ( "29.2.2008" )
YearPlus ( 733101 )
Function definition: (Copy & paste into FileMaker's Edit Custom Function window)
Returns a date 1 year after the given date calculating leap years, too.
E.g., February 28th, 1999 will return February 29th, 2000
February 29th, 2000 will return February 28th, 2001
Input value may be formatted as Date or Text (e.g. 2/28/2001 or 28.2.2001, depending on System Formats) or as Number (number of days from 1/1/0001)
Output format depends on formatting of the calculation field, either as Text, Date or Number.
If the input value cannot be interpreted as a valid date, an error 0 (zero) is returned.
NOTE: This function is only valid for dates between 1901 to 2099. Complete support of Gregorian dates may follow.
Apr 8, 2011
|Add another parameter for plus minus, no need for 2 CF's|
Daniel A. Shockley, New York, NY
May 4, 2011
FileMaker does leap-year handling for you: no need to try to get it yourself.
Just do something like this:
Date( Month( VarDate ); Day( VarDate ); Year( VarDate ) + 1 )
Even better, make your function something like:
YearShift( TheDate; ShiftBy )
and the calc (other than the checking for valid date part):
Date( Month( VarDate ); Day( VarDate ); Year( VarDate ) + ShiftBy )
Then you can use -1 as the ShiftBy to subtract one from the year, 1 to add one to the year, or 7 to add seven to the year.
Also, I notice that your YearPlus gives a non-standard answer when you add one to a February 29th date: the result should be March 1st, not February 28th. Sticking to FileMaker's methods provides consistency for that kind of thing as well. If you want "the last day of February for a given year" you can just do the following: Date( 3, 0, WhateverYear )
May 4, 2011
|That´s what I needed to do: Preserve the Month when adding a year.|
Note: these functions are not guaranteed or supported by BrianDunning.com. Please contact the individual developer with any questions or problems.