
Tips.Net > WordTips Home > Fields > Calculating Dates with Fields
Summary: Fields allow you to place dynamic information within a document. One such piece of information is the current date, inserted with a very simple field. If you want to calculate a date that is two weeks in the future, the task isn’t that simple. This tip describes what it takes to put that future date into your document using nothing but fields. (This tip works with Microsoft Word 97, Word 2000, Word 2002, and Word 2003.)
Aidan asked if it is possible to calculate dates using fields. Seems he wants a date that is two weeks in the future, and thought there must be an easy way to calculate such a future date using fields. Unfortunately, there is no easy way. While Word allows you to do simple calculations using numeric values in fields, it does not allow you to perform such calculations using dates instead of numbers.
You can, however, pull dates apart into their intrinsic portions (months, days, and years), and then do your calculations, but this introduces whole new problems. All of a sudden you need to be concerned with what happens when you "roll" past the end of a month or year. The math involved in doing such a calculation is not trivial. As an example, consider the following compound field:
{QUOTE "{SET Delay "14"}{SET "DaysInMonth" {IF {DATE \@ "MM"}
<> 2 {=ROUND(30.575*{DATE \@ "MM"},0)-ROUND(30.575*{= {DATE \@
"MM"} -1},0)}{IF {=MOD({DATE \@ "yy"|, 4)} > 0 "28" "29"}}}{SET
"NextMonth" {IF {DATE \@ "MM"} = 12 "1/97" "{= {DATE \@ "MM"}
+ 1}/97}}{IF {= {REF Delay} + {DATE \@ "dd"}} <= {DaysInMonth}
{DATE \@ "MMMM {= {REF Delay} + {DATE \@ "dd"}}, yyyy"}{QUOTE
"{NextMonth \@ "MMMM"} {= {REF Delay} + {DATE \@ "dd"} -
{DaysInMonth}}, {IF {DATE \@ "MM"} <> 12 {DATE \@ "yyyy"}{DATE
\@ "{= 1 + {DATE \@ "yyyy"} \# "xxxx"}" }}}}"}
This will return the date in two weeks time (specified in the first line where the Delay value is set. The drawback, of course, is the compound nature of the field--there are over 30 different fields just within this compound field! Even this implementation, as formidable as it looks, will not handle leap years correctly in all instances. (It won't handle leap years correctly in century years divisible by 400.)
Is there an easy way to calculate future dates? Yes, there is--simply use macros. With just a couple of simple instructions you can make short work out of otherwise difficult date calculations. The way this is done was covered a year ago in WordTips; you can also find information at the following Word MVP page:
http://word.mvps.org/FAQs/MacrosVBA/DateOfPrevMonth.htm
Tip #1579 applies to Microsoft Word versions: 97 2000 2002 2003
Take Control! Master the real power behind Word! Successfully master the secrets of powerful formatting and create documents that stand out from the rest. Best of all, you can create documents that are easy to maintain and quick to change.
Check out Word 2007 Styles and Templates today!
Have thousands of WordTips at your fingertips, on your own system. Answer your own questions or help support others. (more information...)
Ask a Word Question
Make a Comment
Beauty Tips
Bugs and Pests Tips
Car Tips
Cleaning Tips
College Tips
Cooking Tips
Excel2007 Tips
ExcelTips
Family Tips
Gardening Tips
Health Tips
Home Tips
Money Tips
Organizing Tips
Pet Tips
Word2007 Tips
WordTips