blob: a2673590c71d3c11ef9675715669f2ce522a8720 [file] [log] [blame]
/*
* Copyright (c) 2003, 2018 Oracle and/or its affiliates. All rights reserved.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0, which is available at
* http://www.eclipse.org/legal/epl-2.0.
*
* This Source Code may also be made available under the following Secondary
* Licenses when the conditions for such availability set forth in the
* Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
* version 2 with the GNU Classpath Exception, which is available at
* https://www.gnu.org/software/classpath/license.html.
*
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
*/
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