Brian Dunning's FileMaker Custom Functions

YearPlus ( TheDate )

Add one year to a given date

  Average rating: 4.3 (35 votes) Log in to vote

Crisix   Crisix
Stefan Pusch KG
http://www.base72.com

Share on Facebook Share on Twitter

  Sample input:
YearPlus ( 2/28/2007 )
YearPlus ( 732735 )

YearPlus ( "29.2.2008" )
YearPlus ( 733101 )
  Sample output:
2/29/2008
733101

28.2.2009
733466

  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.

 

Comments

Bob   Bob, CT
Apr 8, 2011
Add another parameter for plus minus, no need for 2 CF's
 
Daniel A. Shockley   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 )
 
Crisix   Crisix, Vienna
May 4, 2011
That´s what I needed to do: Preserve the Month when adding a year.
 

Log in to post comments.

 

Note: these functions are not guaranteed or supported by BrianDunning.com. Please contact the individual developer with any questions or problems.

Under construction. Email me your wish list for improvements.