Class Week

All Implemented Interfaces:
Serializable, Comparable, TimePeriod, org.jfree.date.MonthConstants

public class Week
extends RegularTimePeriod
implements Serializable
A calendar week. All years are considered to have 53 weeks, numbered from 1 to 53, although in many cases the 53rd week is empty. Most of the time, the 1st week of the year *begins* in the previous calendar year, but it always finishes in the current year (this behaviour matches the workings of the GregorianCalendar class).

This class is immutable, which is a requirement for all RegularTimePeriod subclasses.

See Also:
Serialized Form
  • Field Details

    • FIRST_WEEK_IN_YEAR

      public static final int FIRST_WEEK_IN_YEAR
      Constant for the first week in the year.
      See Also:
      Constant Field Values
    • LAST_WEEK_IN_YEAR

      public static final int LAST_WEEK_IN_YEAR
      Constant for the last week in the year.
      See Also:
      Constant Field Values
  • Constructor Details

    • Week

      public Week()
      Creates a new time period for the week in which the current system date/time falls.
    • Week

      public Week​(int week, int year)
      Creates a time period representing the week in the specified year.
      Parameters:
      week - the week (1 to 53).
      year - the year (1900 to 9999).
    • Week

      public Week​(int week, Year year)
      Creates a time period representing the week in the specified year.
      Parameters:
      week - the week (1 to 53).
      year - the year (1900 to 9999).
    • Week

      public Week​(Date time)
      Creates a time period for the week in which the specified date/time falls.
      Parameters:
      time - the time (null not permitted).
    • Week

      public Week​(Date time, TimeZone zone)
      Creates a time period for the week in which the specified date/time falls, calculated relative to the specified time zone.
      Parameters:
      time - the date/time (null not permitted).
      zone - the time zone (null not permitted).
  • Method Details

    • getYear

      public Year getYear()
      Returns the year in which the week falls.
      Returns:
      The year (never null).
    • getYearValue

      public int getYearValue()
      Returns the year in which the week falls, as an integer value.
      Returns:
      The year.
    • getWeek

      public int getWeek()
      Returns the week.
      Returns:
      The week.
    • previous

      public RegularTimePeriod previous()
      Returns the week preceding this one. This method will return null for some lower limit on the range of weeks (currently week 1, 1900). For week 1 of any year, the previous week is always week 53, but week 53 may not contain any days (you should check for this).
      Specified by:
      previous in class RegularTimePeriod
      Returns:
      The preceding week (possibly null).
    • next

      public RegularTimePeriod next()
      Returns the week following this one. This method will return null for some upper limit on the range of weeks (currently week 53, 9999). For week 52 of any year, the following week is always week 53, but week 53 may not contain any days (you should check for this).
      Specified by:
      next in class RegularTimePeriod
      Returns:
      The following week (possibly null).
    • getSerialIndex

      public long getSerialIndex()
      Returns a serial index number for the week.
      Specified by:
      getSerialIndex in class RegularTimePeriod
      Returns:
      The serial index number.
    • getFirstMillisecond

      public long getFirstMillisecond​(Calendar calendar)
      Returns the first millisecond of the week, evaluated using the supplied calendar (which determines the time zone).
      Specified by:
      getFirstMillisecond in class RegularTimePeriod
      Parameters:
      calendar - the calendar.
      Returns:
      The first millisecond of the week.
    • getLastMillisecond

      public long getLastMillisecond​(Calendar calendar)
      Returns the last millisecond of the week, evaluated using the supplied calendar (which determines the time zone).
      Specified by:
      getLastMillisecond in class RegularTimePeriod
      Parameters:
      calendar - the calendar.
      Returns:
      The last millisecond of the week.
    • toString

      public String toString()
      Returns a string representing the week (e.g. "Week 9, 2002"). TODO: look at internationalisation.
      Overrides:
      toString in class RegularTimePeriod
      Returns:
      A string representing the week.
    • equals

      public boolean equals​(Object obj)
      Tests the equality of this Week object to an arbitrary object. Returns true if the target is a Week instance representing the same week as this object. In all other cases, returns false.
      Overrides:
      equals in class Object
      Parameters:
      obj - The object.
      Returns:
      true if week and year of this and object are the same.
    • hashCode

      public int hashCode()
      Returns a hash code for this object instance.

      The approach described by Joshua Bloch in "Effective Java" has been used here:

      http://developer.java.sun.com/developer/Books/effectivejava/Chapter3.pdf

      Overrides:
      hashCode in class Object
      Returns:
      A hash code.
    • compareTo

      public int compareTo​(Object o1)
      Returns an integer indicating the order of this Week object relative to the specified object: negative == before, zero == same, positive == after.
      Specified by:
      compareTo in interface Comparable
      Parameters:
      o1 - the object to compare.
      Returns:
      negative == before, zero == same, positive == after.
    • parseWeek

      public static Week parseWeek​(String s)
      Parses the string argument as a week.

      This method is required to accept the format "YYYY-Wnn". It will also accept "Wnn-YYYY". Anything else, at the moment, is a bonus.

      Parameters:
      s - string to parse.
      Returns:
      null if the string is not parseable, the week otherwise.