⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dateutils.java

📁 java实现浏览器等本地桌面的功能
💻 JAVA
字号:
/* * $Id: DateUtils.java,v 1.4 2005/10/10 18:02:45 rbair Exp $ * * Copyright 2004 Sun Microsystems, Inc., 4150 Network Circle, * Santa Clara, California 95054, U.S.A. All rights reserved. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. *  * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU * Lesser General Public License for more details. *  * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA */package org.jdesktop.swingx.calendar;import java.util.Calendar;import java.util.Date;/** * @author Scott Violet * @version  $Revision: 1.4 $ */public class DateUtils {    private static Calendar CALENDAR = Calendar.getInstance();    /**     * Returns the last millisecond of the specified date.     *     * @param date Date to calculate end of day from     * @return Last millisecond of <code>date</code>     */    public static Date endOfDay(Date date) {        Calendar calendar = CALENDAR;        synchronized(calendar) {            calendar.setTime(date);            calendar.set(Calendar.HOUR_OF_DAY, 23);            calendar.set(Calendar.MILLISECOND, 999);            calendar.set(Calendar.SECOND, 59);            calendar.set(Calendar.MINUTE, 59);            return calendar.getTime();        }    }    /**     * Returns a new Date with the hours, milliseconds, seconds and minutes     * set to 0.     *     * @param date Date used in calculating start of day     * @return Start of <code>date</code>     */    public static Date startOfDay(Date date) {        Calendar calendar = CALENDAR;        synchronized(calendar) {            calendar.setTime(date);            calendar.set(Calendar.HOUR_OF_DAY, 0);            calendar.set(Calendar.MILLISECOND, 0);            calendar.set(Calendar.SECOND, 0);            calendar.set(Calendar.MINUTE, 0);            return calendar.getTime();        }    }     /**     * Returns day in millis with the hours, milliseconds, seconds and minutes     * set to 0.     *     * @param date long used in calculating start of day     * @return Start of <code>date</code>     */    public static long startOfDayInMillis(long date) {        Calendar calendar = CALENDAR;        synchronized(calendar) {            calendar.setTimeInMillis(date);            calendar.set(Calendar.HOUR_OF_DAY, 0);            calendar.set(Calendar.MILLISECOND, 0);            calendar.set(Calendar.SECOND, 0);            calendar.set(Calendar.MINUTE, 0);            return calendar.getTimeInMillis();        }    }    /**     * Returns the last millisecond of the specified date.     *     * @param date long to calculate end of day from     * @return Last millisecond of <code>date</code>     */    public static long endOfDayInMillis(long date) {        Calendar calendar = CALENDAR;        synchronized(calendar) {            calendar.setTimeInMillis(date);            calendar.set(Calendar.HOUR_OF_DAY, 23);            calendar.set(Calendar.MILLISECOND, 999);            calendar.set(Calendar.SECOND, 59);            calendar.set(Calendar.MINUTE, 59);            return calendar.getTimeInMillis();        }    }    /**     * Returns the day after <code>date</code>.     *     * @param date Date used in calculating next day     * @return Day after <code>date</code>.     */    public static Date nextDay(Date date) {        return new Date(addDays(date.getTime(), 1));    }    /**     * Adds <code>amount</code> days to <code>time</code> and returns     * the resulting time.     *     * @param time Base time     * @param amount Amount of increment.     *      * @return the <var>time</var> + <var>amount</var> days     */    public static long addDays(long time, int amount) {        Calendar calendar = CALENDAR;        synchronized(calendar) {            calendar.setTimeInMillis(time);            calendar.add(Calendar.DAY_OF_MONTH, amount);            return calendar.getTimeInMillis();        }    }    /**     * Returns the day after <code>date</code>.     *     * @param date Date used in calculating next day     * @return Day after <code>date</code>.     */    public static long nextDay(long date) {        return addDays(date, 1);    }    /**     * Returns the week after <code>date</code>.     *     * @param date Date used in calculating next week     * @return week after <code>date</code>.     */    public static long nextWeek(long date) {        return addDays(date, 7);    }    /**     * Returns the number of days difference between <code>t1</code> and     * <code>t2</code>.     *     * @param t1 Time 1     * @param t2 Time 2     * @param checkOverflow indicates whether to check for overflow     * @return Number of days between <code>start</code> and <code>end</code>     */    public static int getDaysDiff(long t1, long t2, boolean checkOverflow) {        if (t1 > t2) {            long tmp = t1;            t1 = t2;            t2 = tmp;        }        Calendar calendar = CALENDAR;        synchronized(calendar) {            calendar.setTimeInMillis(t1);            int delta = 0;            while (calendar.getTimeInMillis() < t2) {                calendar.add(Calendar.DAY_OF_MONTH, 1);                delta++;            }            if (checkOverflow && (calendar.getTimeInMillis() > t2)) {                delta--;            }            return delta;        }    }   /**     * Returns the number of days difference between <code>t1</code> and     * <code>t2</code>.     *     * @param t1 Time 1     * @param t2 Time 2     * @return Number of days between <code>start</code> and <code>end</code>     */      public static int getDaysDiff(long t1, long t2) {       return  getDaysDiff(t1, t2, true);    }    /**     * Check, whether the date passed in is the first day of the year.     *     * @param date date to check in millis     * @return <code>true</code> if <var>date</var> corresponds to the first     *         day of a year     * @see Date#getTime()      */    public static boolean isFirstOfYear(long date) {        boolean ret = false;        Calendar calendar = CALENDAR;        synchronized(calendar) {            calendar.setTimeInMillis(date);            int currentYear = calendar.get(Calendar.YEAR);            // Check yesterday            calendar.add(Calendar.DATE,-1);            int yesterdayYear = calendar.get(Calendar.YEAR);            ret = (currentYear != yesterdayYear);        }        return ret;    }    /**     * Check, whether the date passed in is the first day of the month.     *     * @param date date to check in millis     * @return <code>true</code> if <var>date</var> corresponds to the first     *         day of a month     * @see Date#getTime()      */    public static boolean isFirstOfMonth(long date) {        boolean ret = false;        Calendar calendar = CALENDAR;        synchronized(calendar) {            calendar.setTimeInMillis(date);            int currentMonth = calendar.get(Calendar.MONTH);            // Check yesterday            calendar.add(Calendar.DATE,-1);            int yesterdayMonth = calendar.get(Calendar.MONTH);            ret =  (currentMonth != yesterdayMonth);        }        return ret;         }    /**     * Returns the day before <code>date</code>.     *     * @param date Date used in calculating previous day     * @return Day before <code>date</code>.     */    public static long previousDay(long date) {        return addDays(date, -1);    }    /**     * Returns the week before <code>date</code>.     *     * @param date Date used in calculating previous week     * @return week before <code>date</code>.     */    public static long previousWeek(long date) {        return addDays(date, -7);    }    /**     * Returns the first day before <code>date</code> that has the     * day of week matching <code>startOfWeek</code>.  For example, if you     * want to find the previous monday relative to <code>date</code> you     * would call <code>getPreviousDay(date, Calendar.MONDAY)</code>.     *     * @param date Base date     * @param startOfWeek Calendar constant correspoding to start of week.     * @return start of week, return value will have 0 hours, 0 minutes,     *         0 seconds and 0 ms.     *      */    public static long getPreviousDay(long date, int startOfWeek) {        return getDay(date, startOfWeek, -1);    }    /**     * Returns the first day after <code>date</code> that has the     * day of week matching <code>startOfWeek</code>.  For example, if you     * want to find the next monday relative to <code>date</code> you     * would call <code>getPreviousDay(date, Calendar.MONDAY)</code>.     *     * @param date Base date     * @param startOfWeek Calendar constant correspoding to start of week.     * @return start of week, return value will have 0 hours, 0 minutes,     *         0 seconds and 0 ms.     *      */    public static long getNextDay(long date, int startOfWeek) {        return getDay(date, startOfWeek, 1);    }    private static long getDay(long date, int startOfWeek, int increment) {        Calendar calendar = CALENDAR;        synchronized(calendar) {            calendar.setTimeInMillis(date);            int day = calendar.get(Calendar.DAY_OF_WEEK);            // Normalize the view starting date to a week starting day            while (day != startOfWeek) {                calendar.add(Calendar.DATE, increment);                day = calendar.get(Calendar.DAY_OF_WEEK);            }            return startOfDayInMillis(calendar.getTimeInMillis());        }    }    /**     * Returns the previous month.     *      * @param date Base date     * @return previous month     */    public static long getPreviousMonth(long date) {        return incrementMonth(date, -1);    }    /**     * Returns the next month.     *      * @param date Base date     * @return next month     */    public static long getNextMonth(long date) {        return incrementMonth(date, 1);    }    private static long incrementMonth(long date, int increment) {        Calendar calendar = CALENDAR;        synchronized(calendar) {            calendar.setTimeInMillis(date);            calendar.add(Calendar.MONTH, increment);            return calendar.getTimeInMillis();        }    }    /**     * Returns the date corresponding to the start of the month.     *     * @param date Base date     * @return Start of month.     */    public static long getStartOfMonth(long date) {        return getMonth(date, -1);    }    /**     * Returns the date corresponding to the end of the month.     *     * @param date Base date     * @return End of month.     */    public static long getEndOfMonth(long date) {        return getMonth(date, 1);    }    private static long getMonth(long date, int increment) {		long result;        Calendar calendar = CALENDAR;        synchronized(calendar) {            calendar.setTimeInMillis(date);            if (increment == -1) {                calendar.set(Calendar.DAY_OF_MONTH, 1);                result = startOfDayInMillis(calendar.getTimeInMillis());            } else {                calendar.add(Calendar.MONTH, 1);                calendar.set(Calendar.DAY_OF_MONTH, 1);                calendar.set(Calendar.HOUR_OF_DAY, 0);                calendar.set(Calendar.MILLISECOND, 0);                calendar.set(Calendar.SECOND, 0);                calendar.set(Calendar.MINUTE, 0);                calendar.add(Calendar.MILLISECOND, -1);                result = calendar.getTimeInMillis();            }        }		return result;    }    /**     * Returns the day of the week.     *     * @param date date     * @return day of week.     */    public static int getDayOfWeek(long date) {       Calendar calendar = CALENDAR;        synchronized(calendar) {            calendar.setTimeInMillis(date);            return (calendar.get(Calendar.DAY_OF_WEEK));        }    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -