Holidays 5.2 build: 9639 released: 2014-10-05 compiled with: Java 1.8.0_131 Jet jet12.0-pro-x86/1.8.0_131 Calculates when holidays occur in any given year. Copyright: (c) 1999-2017 Canadian Mind Products. signed Java Applet (that can also be run as an application). Download from: http://mindprod.com/products1.html#HOLIDAYS View HTML to run this program online at: http://mindprod.com/applet/holidays.html ---- Notes: You must install the Java JRE to use this program. See http://mindprod.com/jgloss/jgloss/jre.html This hybrid program is mainly designed to be used as an Applet in a browser but is can also be used from the command prompt, e.g. under Windows command.exe or JPSoft tcc.exe, formerly called the DOS box. Just clicking the programs in a directory listing will not do anything useful. Just typing the program names at the command prompt will not either. This program requires a manual install! See below. I put out an avalanche of free software into the world, and submit PAD files to hundreds of distribution sites, but I rarely hear back from anyone. What's happening? Does it all just work fine? It is so complicated nobody can figure out how to use it and they give up on it? It is it useful? Since everyone has the source, do people just fix the programs to their liking themselves? Did you have trouble installing? Do I presume you know too much? I would be happy to hear from you about your experiences, positive or negative and your requests for improvements. A one-line email to roedy@mindprod.com would be great. ===> Free <=== Full source included. You may even include the source code, modified or unmodified in free/commercial open source/proprietary programs that you write and distribute. May be used freely for any purpose but military. For more details on this restriction, see http://mindprod.com/contact/nonmil.html If you include any Canadian Mind Products code in your own applications, your app too must be labelled non-military use only. http://mindprod.com/contact/nonmil.html All Java jars and source code are included. If you need the class files or Javadoc, you will have to build them yourself. To streamline the zip downloads, class files and Javadoc have been removed. ---- Prerequisites: This program runs under any OS that supports Java, (e.g.W2K/XP/W2003/Vista/W2008/W7-32/W7-64/W8-32/W8-64/Linux/LinuxARM/LinuxX86 /LinuxX64/Ubuntu/Solaris/SolarisSPARC/SolarisSPARC64/SolarisX86/SolarisX64/OSX/AIX...) so long as you have <><> Java version 1.8 <><> or later installed (32-bit or 64-bit Java). See http://mindprod.com/jgloss/installingjava.html for details. ---- Installing on a PC: Download source and compiled jar files to run on your own machine as an application or Applet First install a recent Java JDK or JVM. See http://mindprod.com/jgloss/installingjava.html. To install, extract the zip download with WinZip (or similar unzip utility) into any directory you please, often J:\ -- ticking off the use folder names option. To run as an application, type: java.exe %JAVA_OPTIONS -ea -jar J:\com\mindprod\holidays\holidays.jar {put any parms here} adjusting as necessary to account for where the jar file is. ---- Installing on a MacIntosh: Use Safari to download source and compiled jar files to run on your own machine as an application or Applet. Safari will automatically unpack the zip into ~/Downloads (version 10.5) [or on the Desktop (version 10.4 and earlier)]. First install a recent Java JDK or JVM. See http://mindprod.com/jgloss/installingjava.html. You may optionally move the download tree to a permanent home. I don't have a MacIntosh, just a PC, so I can't test my Java programs for Mac compatibility. In theory they should work without problems, but in practice that does not always happen. If you have problems please, let me know, preferably with screenshots and complete verbatim error messages. To run as an application, without parameters, just double click the jar file. To run as an application with parameters, in bash shell type: open Terminal.app cd ~/Desktop java.exe -ea -jar com/mindprod/holidays/holidays.jar {put any parms here} adjusting as necessary to account for where the jar file is. ---- Rebuilding: The zip already contains the necessary jar files, so unless you modify the program, there is no need to recompile the source or rebuild the jar. Configure.java basedir="E:/" in rebuild.xml to the drive where your files are. Configure.java your certificate name with environment SET cert=mindprodcert2017rsa Configure.java your certificate password with environment SET jarsignerpassword=sesame Use ANT and rebuild.xml, not build.xml, to recompile and recreate the jar. ---- Use: Calculates when various holidays occur in any given year BC or AD. Designed to be cannibalised to include the calculation routines in your own programs. You might use it to prepare paper calenders well in advance or electronic calendars. You might also use the logic in computer programs that compute payrolls, bus schedules, or club meetings. You might use it in writing novels or researching historical events. It can also be used as an Applet or a standalone application. It currently calculates 68 "holidays" including the following: New Years Day Congress Start Day Martin Luther King Day Inauguration Day Robbie Burns Day Australia Day Groundhog Day BC Family Day Mardi Gras Ash Wednesday Darwin Day Lincoln's Birthday Valentines Day Presidents Day Alberta Family Day Washington's Birthday Commonwealth Day Daylight Savings Day St Patrick's day Vernal Equinox Palm Sunday Good Friday Earth Hour April Fools Day Earth Day Easter Sunday Easter Monday ANZAC Day Cinco de Mayo Europe Day Mothers Day Armed Forces Day Victoria Day Memorial Day Change Your Password Day Australia Queen's Birthday Fathers Day Summer Solstice Aboriginal Day St Jean-Baptiste Day Canada Day Independence Day Utah Pioneer Day Parents' Day Canada Civic Day Canadian Labour Day American Labor Day Grandparents Daay Autumnal Equinox Canadian Thanksgiving Columbus Day Creationism Day Halloween Daylight Savings End General Election Day Remembrance Day Veterans Day American Thanksgiving Black Friday St. Andrews Day World AIDS Day Human Rights Day Winter Solstice Christmas Eve Christmas Christmas in the USA Boxing Day New Years Eve If a holiday was not celebrated in a given year, it will not show. Includes complete Java source code to calculate when the holiday occurs in a given year, when it was first celebrated, when first proclaimed, the rule for how it is calculated in words and an authority to go to for more information. Also calculates the nearest weekday to any given holiday, when you actually get the day off. This is what I refer to by the term "shifted". Boxing day has special shift handling. In the source are methods that can also be used to calculate how many business days were between given dates. It is quite easy to specify which days you want considered as holidays using methods like addHoliday where you specify the date or the name of the Holiday, addAmericanFederalHolidays and addWeekDaysAsHolidays. The main holiday still missing is Chinese New Year, the second new moon after Winter solstice. Since it is an astronomical moment, the civil calendar day it occurs on depends on time zone. There is an additiontal package of German holidays designed to work in the Holidays framework available from http://www.applicate.de/freesoftware/holiday/ One typical use embedding in your own program: public class DemoGermanHolidayUtils { public static void main(String[] args) { // 1. Enable calculation from 1995 to 2010 IsHoliday holiday = new IsHoliday(1995, 2010); // 2. Mark weekends as holidays holiday.addWeekendsAsHolidays(); // 3. Add German federal holidays GermanHolidayUtils.addGermanFederalHolidays(holiday); System.out.print("Is May 1st 2002 a holiday: "); System.out.println(holiday.isHoliday( new BigDate(2002, 5, 1))); } } To install, Extract the zip download with WinZip, available from http://www.winzip.com (or similar unzip utility) into any directory you please, often C:\ -- ticking off the "user folder names" option. To run as an application, type: java.exe -jar C:\com\mindprod\holidays\holidays.jar adjusting as necessary to account for where the jar file is. Why the turkey icon? It represents the holiday feasts of Thanksgiving and Christmas. You may use the code freely in your own programs. Exporting Holidays to CSV ************************* You can use the ExportHolidaysToCSV program to calculate and export the holidays for any given year in CSV format. You can the import them into programs or databases written in other languages. Use it like this: java.exe -jar exportholidaystocsv.jar 2050 verbose to get the authority and rules includes. These generate multiple line fields, incompatible with some simple-minded CSV programs. Or java.exe -jar exportholidaystocsv.jar 2050 to get just the holiday name, yyyy-mm-dd when observed in 2050, year first observed and year first proclaimed. If you leave of the year, the current year is presumed. The results appear in a file called: holidaysInYear2050.csv in the current directory. The file is in UTF-8 encoding. View it with NotePad, Jedit or other modern UTF-8 text editor. You can convert it with CSVEntify to make visbible the awkward characters with HTML entities, ---- Version History: 1.0 1999-09-09 to show off the Holidays class 1.1 1999-09-10 add St Patrick's Day and Commonwealth Day 1.2 1999-09-17 reorg so each holiday calculator is a separate class add equinox and solstice calculators. 1.3 1999-10-24 add Robbie Burns Day 1.4 2000-05-08 more accurate Victoria Day calculation. 1.5 2001-01-14 configurable default year 1.6 2001-04-07 add inauguration day 1.7 2002-01-08 change default date to 2003 fix bug in Victoria Day calc. 1.8 2002-03-16 make fromYear and toYear protected to make it easier to override in isHoliday.java. 1.9 2002-03-18 improve Javadoc improve constructor for IsHoliday class 2.0 2004-04-24 add Earth Day 2.1 2005-02-12 change default year to 2005 2.2 2005-06-18 consistent bat files. 2.3 2005-06-18 about box 2.4 2005-07-27 added Parents' Day added extensive Javadoc 2.5 2005-12-01 added Human Rights Day 2.6 2006-03-05 reformat with IntelliJ, add Javadoc 2.7 2006-03-05 2.8 2006-03-05 2.9 2006-03-05 3.0 2006-03-05 3.1 2007-05-22 add PAD and icon, more IntelliJ inspect tidying. 3.2 2007-10-10 additional notes. 3.3 2007-10-13 UK vs US Christmas, calculate when get day off. 3.4 2007-12-19 display year to ensure have correct one. 3.5 2008-01-25 add Australia Day 3.6 2008-02-02 add ANZAC day, Australian Queen's Birthday 3.7 2008-02-07 add Mardi Gras 3.8 2008-03-20 convert to JDK 1.5, sort holidays, tidy word wraps, use of rsquo 3.9 2008-06-21 add Aboriginal Day 4.0 2008-10-19 add Daylight Saving Start and Daylight Saving End Day 4.1 2008-11-01 add St. Andrews day 4.2 2008-12-03 add World AIDS day 4.3 2009-09-15 add Change Your Password Day 4.4 2009-11-23 add Black Friday 4.5 2010-03-30 add Earth Hour 4.6 2010-10-23 add Creationism Day 4.7 2011-02-16 add ExportHolidaysAsCSV 4.8 2013-01-29 add Darwin Day 4.9 2013-02-10 add BC Family Day 5.0 2014-03-17 add No Bag day 5.1 2014-04-16 add Sweater Day 5.2 2014-10-05 add Orange shirt day and Sorry Day -30-