Java Week getStartDate(Date date, int weeks, Locale locale)

Here you can find the source of getStartDate(Date date, int weeks, Locale locale)

Description

This method receives the @params Date date,int weeks,Locale locale It sets a Gregorian Calendar with the given Date, with the given locale a format style is determined.

License

Artistic License

Parameter

Parameter Description
date a parameter
weeks a parameter
locale a parameter

Declaration

public static String getStartDate(Date date, int weeks, Locale locale) 

Method Source Code


//package com.java2s;
/*//from   ww  w  .j a v  a2s. com
 *    Artistic License
 *
 *    Preamble
 *
 *    The intent of this document is to state the conditions under which a
 *    Package may be copied, such that the Copyright Holder maintains some
 *    semblance of artistic control over the development of the package,
 *    while giving the users of the package the right to use and distribute
 *    the Package in a more-or-less customary fashion, plus the right to
 *    make reasonable modifications.
 *
 *    Definitions:
 *
 *    "Package" refers to the collection of files distributed by the
 *    Copyright Holder, and derivatives of that collection of files created
 *    through textual modification.
 *
 *    "Standard Version" refers to such a Package if it has not been
 *    modified, or has been modified in accordance with the wishes of the
 *    Copyright Holder.
 *
 *    "Copyright Holder" is whoever is named in the copyright or copyrights
 *    for the package.
 *
 *    "You" is you, if you're thinking about copying or distributing this
 *    Package.
 *
 *    "Reasonable copying fee" is whatever you can justify on the basis of
 *    media cost, duplication charges, time of people involved, and so
 *    on. (You will not be required to justify it to the Copyright Holder,
 *    but only to the computing community at large as a market that must
 *    bear the fee.)
 *
 *    "Freely Available" means that no fee is charged for the item itself,
 *    though there may be fees involved in handling the item. It also means
 *    that recipients of the item may redistribute it under the same
 *    conditions they received it.
 *
 *    1. You may make and give away verbatim copies of the source form of
 *    the Standard Version of this Package without restriction, provided
 *    that you duplicate all of the original copyright notices and
 *    associated disclaimers.
 *
 *    2. You may apply bug fixes, portability fixes and other modifications
 *    derived from the Public Domain or from the Copyright Holder. A
 *    Package modified in such a way shall still be considered the Standard
 *    Version.
 *
 *    3. You may otherwise modify your copy of this Package in any way,
 *    provided that you insert a prominent notice in each changed file
 *    stating how and when you changed that file, and provided that you do
 *    at least ONE of the following:
 *
 *        a) place your modifications in the Public Domain or otherwise
 *        make them Freely Available, such as by posting said modifications
 *        to Usenet or an equivalent medium, or placing the modifications
 *        on a major archive site such as ftp.uu.net, or by allowing the
 *        Copyright Holder to include your modifications in the Standard
 *        Version of the Package.
 *
 *        b) use the modified Package only within your corporation or
 *        organization.
 *
 *        c) rename any non-standard executables so the names do not
 *        conflict with standard executables, which must also be provided,
 *        and provide a separate manual page for each non-standard
 *        executable that clearly documents how it differs from the
 *        Standard Version.
 *
 *        d) make other distribution arrangements with the Copyright Holder.
 *
 *    4. You may distribute the programs of this Package in object code or
 *    executable form, provided that you do at least ONE of the following:
 *
 *        a) distribute a Standard Version of the executables and library
 *        files, together with instructions (in the manual page or
 *        equivalent) on where to get the Standard Version.
 *
 *        b) accompany the distribution with the machine-readable source of
 *        the Package with your modifications.
 *
 *        c) accompany any non-standard executables with their
 *        corresponding Standard Version executables, giving the
 *        non-standard executables non-standard names, and clearly
 *        documenting the differences in manual pages (or equivalent),
 *        together with instructions on where to get the Standard Version.
 *
 *        d) make other distribution arrangements with the Copyright Holder.
 *
 *    5. You may charge a reasonable copying fee for any distribution of
 *    this Package. You may charge any fee you choose for support of this
 *    Package. You may not charge a fee for this Package itself.  However,
 *    you may distribute this Package in aggregate with other (possibly
 *    commercial) programs as part of a larger (possibly commercial)
 *    software distribution provided that you do not advertise this Package
 *    as a product of your own.
 *
 *    6. The scripts and library files supplied as input to or produced as
 *    output from the programs of this Package do not automatically fall
 *    under the copyright of this Package, but belong to whomever generated
 *    them, and may be sold commercially, and may be aggregated with this
 *    Package.
 *
 *    7. C or perl subroutines supplied by you and linked into this Package
 *    shall not be considered part of this Package.
 *
 *    8. The name of the Copyright Holder may not be used to endorse or
 *    promote products derived from this software without specific prior
 *    written permission.
 *
 *    9. THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR
 *    IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
 *    WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
 * */

import java.text.DateFormat;

import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Locale;

public class Main {
    /**
     * This method receives the @params Date date,int weeks,Locale locale
     * It sets a Gregorian Calendar with the given Date, with the given locale
     * a format style is determined. By using the @param weeks that specifies the amount
     * of weeks that past, the corresponding week of year is calculated. Based on this value
     * the method getStartDateOfWeek is invoked.
     * getStartDateOfWeek is responsible for calculating the date of the first day of a
     * week of year.
     *
     * @param date
     * @param weeks
     * @param locale
     */
    public static String getStartDate(Date date, int weeks, Locale locale) {
        Calendar cal_date = new GregorianCalendar();
        cal_date.setTime(date);

        //format style
        DateFormat df = DateFormat.getDateInstance(DateFormat.FULL, locale);

        //get current week
        int startWeek = getWeek(weeks);
        cal_date.set(Calendar.WEEK_OF_YEAR, startWeek);

        String strstart = df.format(cal_date.getTime());
        strstart = getStartDateOfWeek(cal_date.getTime(), locale);

        return strstart;
    }

    /**
     * This method subtracts the @param int duration that represents the weeks that past
     * from the current week, and obtains the corresponding week of year.
     *
     * @param duration
     */
    public static int getWeek(int duration) {
        Calendar cal_date = new GregorianCalendar();
        DateFormat df = DateFormat.getInstance();
        int kalwoch = 0;
        cal_date.add(Calendar.WEEK_OF_YEAR, -duration);
        kalwoch = cal_date.get(Calendar.WEEK_OF_YEAR);

        return kalwoch;
    }

    /**
     * This method formats a Date to a String
     *
     * @param d
     * @param locale
     */
    public static String format(Date d, Locale locale) {
        return format(d, locale, DateFormat.FULL);
    }

    /**
     * __UNDOCUMENTED__
     *
     * @param d      __UNDOCUMENTED__
     * @param locale __UNDOCUMENTED__
     * @param style  __UNDOCUMENTED__
     * @return __UNDOCUMENTED__
     */
    public static String format(Date d, Locale locale, int style) {
        //macht ein Datumsformat
        DateFormat df = DateFormat.getDateInstance(style, locale);

        //formats a Date to a string Corresponding to the given Locale
        String myDate = df.format(d);

        return myDate;
    }

    /**
     * this method parses the @params String day,month,year to ints, builds a Gregorian
     * Calendar with these values to get the corresponding Date that is returned as
     * String by invoking the method format(Date d,Locale locale), that used to parse a
     * Date to a String.
     *
     * @param day
     * @param month
     * @param year
     * @param locale
     */
    public static String format(String day, String month, String year, Locale locale) {
        //parseInt(day,month,year)
        int tag = Integer.parseInt(day);
        int monat = Integer.parseInt(month);
        int jahr = Integer.parseInt(year);

        //buildGregorianCalendar for representation of a Date with jahr,tag,monat-1
        Calendar cal = new GregorianCalendar(jahr, monat - 1, tag);
        Date d = cal.getTime();

        return format(d, locale);
    }

    /**
     * __UNDOCUMENTED__
     *
     * @return __UNDOCUMENTED__
     */
    public static int getTime() {
        Calendar cal = new GregorianCalendar();
        Date d = cal.getTime();
        int hour = cal.get(Calendar.HOUR_OF_DAY);

        return hour;
    }

    /**
     * This method sets a Gregorian Calendar according to the given Date
     *
     * @param selectedDate - it get the day of week, based on this the first
     *                     day of the corresponding week is calculated.
     *                     By using the method format(Date d,Locale locale) a String with the default format
     *                     style is returned.
     * @param locale
     */
    private static String getStartDateOfWeek(Date selectedDate, Locale locale) {
        DateFormat df = DateFormat.getDateInstance(DateFormat.FULL, locale);
        Calendar cal_date = new GregorianCalendar();
        cal_date.setTime(selectedDate);

        int strDay = cal_date.get(Calendar.DAY_OF_WEEK);

        cal_date.add(Calendar.DATE, -strDay + 1);

        return format(cal_date.getTime(), Locale.getDefault());
    }
}

Related

  1. getNextWeek(String week)
  2. getPreWeek(String week)
  3. getPreWeekDayByStr(String curday)
  4. getPreWeekDayByStr(String curday)
  5. getPreWeeks(int weekNum)
  6. getStartDateOfWeek(Date selectedDate, Locale locale)
  7. getThisWeek()
  8. getThisWeek()
  9. getWeek()