1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/samples/mothers_day.js Fri Sep 04 17:17:44 2015 +0530 1.3 @@ -0,0 +1,56 @@ 1.4 +# compute Mothers day of the given the year 1.5 + 1.6 +/* 1.7 + * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 1.8 + * 1.9 + * Redistribution and use in source and binary forms, with or without 1.10 + * modification, are permitted provided that the following conditions 1.11 + * are met: 1.12 + * 1.13 + * - Redistributions of source code must retain the above copyright 1.14 + * notice, this list of conditions and the following disclaimer. 1.15 + * 1.16 + * - Redistributions in binary form must reproduce the above copyright 1.17 + * notice, this list of conditions and the following disclaimer in the 1.18 + * documentation and/or other materials provided with the distribution. 1.19 + * 1.20 + * - Neither the name of Oracle nor the names of its 1.21 + * contributors may be used to endorse or promote products derived 1.22 + * from this software without specific prior written permission. 1.23 + * 1.24 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS 1.25 + * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 1.26 + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 1.27 + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 1.28 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 1.29 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 1.30 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 1.31 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 1.32 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 1.33 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 1.34 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 1.35 + */ 1.36 + 1.37 +// print "Mother's day" of the given year using Java Time API 1.38 + 1.39 +if (arguments.length == 0) { 1.40 + print("Usage: jjs mothers_day.js -- year"); 1.41 + exit(1); 1.42 +} 1.43 + 1.44 +// java classes used 1.45 +var DayOfWeek = java.time.DayOfWeek; 1.46 +var LocalDate = java.time.LocalDate; 1.47 +var TemporalAdjusters = java.time.temporal.TemporalAdjusters; 1.48 + 1.49 +var year = parseInt(arguments[0]); 1.50 + 1.51 +// See: https://en.wikipedia.org/?title=Mother%27s_Day 1.52 +// We need second Sunday of May. Make April 30 of the given 1.53 +// year adjust and adjust to next Sunday from there twice. To adjust a Date 1.54 +// we use a common TemporalAdjuster provided in JDK8. 1.55 +// https://docs.oracle.com/javase/8/docs/api/java/time/temporal/TemporalAdjusters.html 1.56 + 1.57 +print(LocalDate.of(year, 4, 30). 1.58 + with(TemporalAdjusters.next(DayOfWeek.SUNDAY)). 1.59 + with(TemporalAdjusters.next(DayOfWeek.SUNDAY)));