Easter - compute the day on which Easter falls : Calendar Date « Development Class « Java

Home
Java
1.2D Graphics GUI
2.3D
3.Advanced Graphics
4.Ant
5.Apache Common
6.Chart
7.Class
8.Collections Data Structure
9.Data Type
10.Database SQL JDBC
11.Design Pattern
12.Development Class
13.EJB3
14.Email
15.Event
16.File Input Output
17.Game
18.Generics
19.GWT
20.Hibernate
21.I18N
22.J2EE
23.J2ME
24.JavaFX
25.JDK 6
26.JDK 7
27.JNDI LDAP
28.JPA
29.JSP
30.JSTL
31.Language Basics
32.Network Protocol
33.PDF RTF
34.Reflection
35.Regular Expressions
36.Scripting
37.Security
38.Servlets
39.Spring
40.Swing Components
41.Swing JFC
42.SWT JFace Eclipse
43.Threads
44.Tiny Application
45.Velocity
46.Web Services SOA
47.XML
Java » Development Class » Calendar Date 




Easter - compute the day on which Easter falls
Easter - compute the day on which Easter falls
       

/*
 * Copyright (c) Ian F. Darwin, http://www.darwinsys.com/, 1996-2002.
 * All rights reserved. Software written by Ian F. Darwin and others.
 * $Id: LICENSE,v 1.8 2004/02/09 03:33:38 ian Exp $
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 *
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS''
 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
 * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS
 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 * POSSIBILITY OF SUCH DAMAGE.
 
 * Java, the Duke mascot, and all variants of Sun's Java "steaming coffee
 * cup" logo are trademarks of Sun Microsystems. Sun's, and James Gosling's,
 * pioneering role in inventing and promulgating (and standardizing) the Java 
 * language and environment is gratefully acknowledged.
 
 * The pioneering role of Dennis Ritchie and Bjarne Stroustrup, of AT&T, for
 * inventing predecessor languages C and C++ is also gratefully acknowledged.
 */

import java.util.Calendar;
import java.util.GregorianCalendar;

/**
 * Easter - compute the day on which Easter falls.
 
 * In the Christian religion, Easter is possibly the most important holiday of
 * the year, so getting its date <I>just so </I> is worthwhile.
 
 @author: Ian F. Darwin, http://www.darwinsys.com/, based on a detailed
 *          algorithm in Knuth, vol 1, pg 155.
 
 * @Version: $Id: Easter.java,v 1.5 2004/02/09 03:33:46 ian Exp $ Written in C,
 *           Toronto, 1988. Java version 1996.
 
 * @Note: It's not proven correct, although it gets the right answer for years
 *        around the present.
 */
public class Easter {

  /*
   * Compute the day of the year that Easter falls on. Step names E1 E2 etc.,
   * are direct references to Knuth, Vol 1, p 155. @exception
   * IllegalArgumentexception If the year is before 1582 (since the algorithm
   * only works on the Gregorian calendar).
   */
  public static final Calendar findHolyDay(int year) {
    if (year <= 1582) {
      throw new IllegalArgumentException(
          "Algorithm invalid before April 1583");
    }
    int golden, century, x, z, d, epact, n;

    golden = (year % 191/* E1: metonic cycle */
    century = (year / 1001/* E2: e.g. 1984 was in 20th C */
    x = (* century / 412/* E3: leap year correction */
    z = ((* century + 5255/* E3: sync with moon's orbit */
    d = (* year / 4- x - 10;
    epact = (11 * golden + 20 + z - x30/* E5: epact */
    if ((epact == 25 && golden > 11|| epact == 24)
      epact++;
    n = 44 - epact;
    n += 30 (n < 21 0)/* E6: */
    n += ((d + n7);
    if (n > 31/* E7: */
      return new GregorianCalendar(year, 1, n - 31)/* April */
    else
      return new GregorianCalendar(year, 1, n)/* March */
  }

  /** Main program, when used as a standalone application */
  public static void main(String[] argv) {

    if (argv.length == 0) {
      int thisYear = new GregorianCalendar().get(Calendar.YEAR);
      Calendar c = Easter.findHolyDay(thisYear);
      System.out.println(c.getTime());
    else
      for (int i = 0; i < argv.length; i++) {
        int year = 0;
        try {
          year = Integer.parseInt(argv[i]);
          System.out.println(Easter.findHolyDay(year).getTime());
        catch (IllegalArgumentException e) {
          System.err.println("Year " + argv[i" invalid ("
              + e.getMessage() ").");
        }
      }
  }
}

           
         
    
    
    
    
    
    
  














Related examples in the same category
1.Create a Date object using the Calendar class
2.When does the UNIX date get into troubleWhen does the UNIX date get into trouble
3.Trivial class to show use of Date and Calendar objectsTrivial class to show use of Date and Calendar objects
4.Convert longs (time_t in UNIX terminology) to seconds
5.Show use of Calendar objectsShow use of Calendar objects
6.How quickly can you press return
7.Show use of Calendar get() method with various parameters
8.TimeComputation for processing sqrt and Input and Output operations.
9.Bean to display a month calendar in a JPanelBean to display a month calendar in a JPanel
10.Show some date uses 1
11.Show dates before 1970
12.Compare Dates
13.Compare File Dates
14.If a date is after another date
15.If a date is before another date
16.Compute days between 2 dates
17.Show some calendar calculations
18.The best way to format a date/time is to use
19.Create SimpleDateFormats from a string read from a file
20.DateCalAdd -- compute the difference between two dates
21.Show some date uses
22.Calendar DemoCalendar Demo
23.DateDiff -- compute the difference between two dates
24.DateAdd -- compute the difference between two dates
25.Increment and Decrement a Date Using the Calendar Class
26.Increment and Decrement Months Using the Calendar Class
27.Add or subtract days to current date using Java Calendar
28.Subtract days from current date using Calendar.add method
29.Add hours to current date using Calendar.add method
30.Subtract hours from current date using Calendar.add method
31.Add minutes to current date using Calendar.add method
32.Subtract minutes from current date using Calendar.add method
33.Add months to current date using Calendar.add method
34.Subtract months from current date using Calendar.add method
35.Add seconds to current date using Calendar.add method
36.Subtract seconds from current time using Calendar.add method
37.Add week to current date using Calendar.add method
38.Add hours, minutes or seconds to a date
39.Subtract week from current date
40.Add year to current date using Calendar.add method
41.Add 10 months to the calendar
42.Subtract 1 year from the calendar
43.Subtract year from current date
44.Calendar adjust date automatically
45.Display Day of Week using Java Calendar
46.Display Month of year using Java Calendar
47.Display full date time
48.Get a List of Month Names
49.Get current date, year and month
50.Get Week of month and year using Java Calendar
51.Get the number of days in that month
52.Get the current month name
53.Get day, month, year value from the current date
54.Convert day of the year to date
55.Pass the year information to the calendar object
56.Get the last date of a month
57.Convert day of year to day of month
58.Determine the day of the week
59.Set with GregorianCalendar.YEAR, MONTH and DATE
60.Determine if an hour is between an interval
61.Parse a String to obtain a Date/GregorianCalendar object
62.Try month in a leap year
63.Determining If a Year Is a Leap Year
64.Determining the Day-of-Week for a Particular Date
65.Subtract 30 days from the calendar
66.Date and time with month
67.Date and time with day and month fully spelled-out
68.Formatting the Time Using a Custom Format
69.Convert string date to long value
70.Display date with a short day and month name
71.Convert Date to String
72.Validate a date Using DateFormat
73.Get the day name
74.Use the SimpleDateFormat from the java.text package
75.Formatting date with full day and month name and show time up to milliseconds with AM/PM
76.Getting the Current Time
77.Output current time: %tc
78.Swing: Date Time EditorSwing: Date Time Editor
79.Get day of week
80.Convert milliseconds value to date
81.Calculate the age
82.Format a duration in ms into a string as "Days,Hours,minutes and seconds"
83.Formatting Symbols for SimpleDateFormat
84.Express a duration in term of HH:MM:SS
85.Match DateMatch Date
86.Checks if two calendar objects represent the same local time.
87.Checks if two date objects are on the same day ignoring time
88.Checks if two date objects represent the same instant in time
89.Calendar Comparator
90.Calendar To String
91.Formatter that caches formatted date information
92.Date Format Cache.
93.Date and time formatting utilities and constants.
94.Formatting dates into Strings.
95.Monitored GregorianCalendar
96.RFC date format
97.Utilities for java.util.Date
98.Calendar operations
99.Calendar Util
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.