/*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
*
* Copyright (c) 2003-2017 Oracle and/or its affiliates. All rights reserved.
*
* The contents of this file are subject to the terms of either the GNU
* General Public License Version 2 only ("GPL") or the Common Development
* and Distribution License("CDDL") (collectively, the "License"). You
* may not use this file except in compliance with the License. You can
* obtain a copy of the License at
* https://oss.oracle.com/licenses/CDDL+GPL-1.1
* or LICENSE.txt. See the License for the specific
* language governing permissions and limitations under the License.
*
* When distributing the software, include this License Header Notice in each
* file and include the License file at LICENSE.txt.
*
* GPL Classpath Exception:
* Oracle designates this particular file as subject to the "Classpath"
* exception as provided by Oracle in the GPL Version 2 section of the License
* file that accompanied this code.
*
* Modifications:
* If applicable, add the following below the License Header, with the fields
* enclosed by brackets [] replaced by your own identifying information:
* "Portions Copyright [year] [name of copyright owner]"
*
* Contributor(s):
* If you wish your version of this file to be governed by only the CDDL or
* only the GPL Version 2, indicate your decision by adding "[Contributor]
* elects to include this software in this distribution under the [CDDL or GPL
* Version 2] license." If you don't indicate a single choice of license, a
* recipient has the option to distribute your version of this file under
* either the CDDL, the GPL Version 2 or to extend the choice of license to
* its licensees as provided above. However, if you add GPL Version 2 code
* and therefore, elected the GPL Version 2 license, then the option applies
* only if the new code is made subject to such option by the copyright
* holder.
*/
package com.sun.cb;
import java.util.*;
import java.text.SimpleDateFormat;
/**
* This class contains helper methods for dealing with
* Date objects.
*/
public final class DateHelper {
public static final Date getDate(int year, int month, int day,
int hour, int minute) {
// returns a Date with the specified time elements
Calendar cal = new GregorianCalendar(year, intToCalendarMonth(month),
day, hour, minute);
return cal.getTime();
} // getDate
public static final Date getDate(int year, int month, int day) {
// returns a Date with the specified time elements,
// with the hour and minutes both set to 0 (midnight)
Calendar cal = new GregorianCalendar(year, intToCalendarMonth(month),
day);
return cal.getTime();
} // getDate
static public final Date addDays(Date target, int days) {
// returns a Date that is the sum of the target Date
// and the specified number of days;
// to subtract days from the target Date, the days
// argument should be negative
long msPerDay = 1000 * 60 * 60 * 24;
long msTarget = target.getTime();
long msSum = msTarget + (msPerDay * days);
Date result = new Date();
result.setTime(msSum);
return result;
} // addDays
static public int dayDiff(Date first, Date second) {
// returns the difference, in days, between the first
// and second Date arguments
long msPerDay = 1000 * 60 * 60 * 24;
long diff = (first.getTime() / msPerDay) - (second.getTime() / msPerDay);
Long convertLong = new Long(diff);
return convertLong.intValue();
} // dayDiff
static public int getYear(Date date) {
Calendar cal = new GregorianCalendar();
cal.setTime(date);
return cal.get(Calendar.YEAR);
} // getYear
static public int getMonth(Date date) {
Calendar cal = new GregorianCalendar();
cal.setTime(date);
int calendarMonth = cal.get(Calendar.MONTH);
return calendarMonthToInt(calendarMonth);
} // getMonth
static public int getDay(Date date) {
Calendar cal = new GregorianCalendar();
cal.setTime(date);
return cal.get(Calendar.DAY_OF_MONTH);
} // getDay
static public int getHour(Date date) {
Calendar cal = new GregorianCalendar();
cal.setTime(date);
return cal.get(Calendar.HOUR_OF_DAY);
} // geHour
static public int getMinute(Date date) {
Calendar cal = new GregorianCalendar();
cal.setTime(date);
return cal.get(Calendar.MINUTE);
} // geMinute
private static int calendarMonthToInt(int calendarMonth) {
if (calendarMonth == Calendar.JANUARY)
return 1;
else if (calendarMonth == Calendar.FEBRUARY)
return 2;
else if (calendarMonth == Calendar.MARCH)
return 3;
else if (calendarMonth == Calendar.APRIL)
return 4;
else if (calendarMonth == Calendar.MAY)
return 5;
else if (calendarMonth == Calendar.JUNE)
return 6;
else if (calendarMonth == Calendar.JULY)
return 7;
else if (calendarMonth == Calendar.AUGUST)
return 8;
else if (calendarMonth == Calendar.SEPTEMBER)
return 9;
else if (calendarMonth == Calendar.OCTOBER)
return 10;
else if (calendarMonth == Calendar.NOVEMBER)
return 11;
else if (calendarMonth == Calendar.DECEMBER)
return 12;
else
return 1;
} // calendarMonthToInt
public static String format(Date date, String pattern) {
// returns a String representation of the date argument,
// formatted according to the pattern argument, which
// has the same syntax as the argument of the SimpleDateFormat
// class
SimpleDateFormat formatter = new SimpleDateFormat(pattern);
return formatter.format(date);
} // format
public static String format(Calendar cal, String pattern) {
SimpleDateFormat formatter = new SimpleDateFormat(pattern);
return formatter.format(calendarToDate(cal));
} // format
private static int intToCalendarMonth(int month) {
if (month == 1)
return Calendar.JANUARY;
else if (month == 2)
return Calendar.FEBRUARY;
else if (month == 3)
return Calendar.MARCH;
else if (month == 4)
return Calendar.APRIL;
else if (month == 5)
return Calendar.MAY;
else if (month == 6)
return Calendar.JUNE;
else if (month == 7)
return Calendar.JULY;
else if (month == 8)
return Calendar.AUGUST;
else if (month == 9)
return Calendar.SEPTEMBER;
else if (month == 10)
return Calendar.OCTOBER;
else if (month == 11)
return Calendar.NOVEMBER;
else if (month == 12)
return Calendar.DECEMBER;
else
return Calendar.JANUARY;
} // intToCalendarMonth
public static Calendar dateToCalendar(Date date) {
Calendar cal = new GregorianCalendar();
cal.setTime(date);
return cal;
} // dateToCalendar
public static Date calendarToDate(Calendar cal) {
return cal.getTime();
} // calendarToDate
} // class