mothers_day.js revision 1412:bfe6bd5d57bf
1# compute Mothers day of the given the year 2 3/* 4 * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 5 * 6 * Redistribution and use in source and binary forms, with or without 7 * modification, are permitted provided that the following conditions 8 * are met: 9 * 10 * - Redistributions of source code must retain the above copyright 11 * notice, this list of conditions and the following disclaimer. 12 * 13 * - Redistributions in binary form must reproduce the above copyright 14 * notice, this list of conditions and the following disclaimer in the 15 * documentation and/or other materials provided with the distribution. 16 * 17 * - Neither the name of Oracle nor the names of its 18 * contributors may be used to endorse or promote products derived 19 * from this software without specific prior written permission. 20 * 21 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS 22 * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 23 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 24 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 25 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 26 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 27 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 28 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 29 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 30 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 31 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 32 */ 33 34// print "Mother's day" of the given year using Java Time API 35 36if (arguments.length == 0) { 37 print("Usage: jjs mothers_day.js -- year"); 38 exit(1); 39} 40 41// java classes used 42var DayOfWeek = java.time.DayOfWeek; 43var LocalDate = java.time.LocalDate; 44var TemporalAdjusters = java.time.temporal.TemporalAdjusters; 45 46var year = parseInt(arguments[0]); 47 48// See: https://en.wikipedia.org/?title=Mother%27s_Day 49// We need second Sunday of May. Make April 30 of the given 50// year adjust and adjust to next Sunday from there twice. To adjust a Date 51// we use a common TemporalAdjuster provided in JDK8. 52// https://docs.oracle.com/javase/8/docs/api/java/time/temporal/TemporalAdjusters.html 53 54print(LocalDate.of(year, 4, 30). 55 with(TemporalAdjusters.next(DayOfWeek.SUNDAY)). 56 with(TemporalAdjusters.next(DayOfWeek.SUNDAY))); 57