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

📄 dateutil.java

📁 一个简单ssh+extjs的人力资源管理系统(转载)
💻 JAVA
字号:
package com.idealab.util;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

/**
 * Do date format.
 * 
 * @author Xuefeng
 */
public final class DateUtil {

    private static String DATETIME_FORMAT = "yyyy-MM-dd HH:mm";
    private static String DATE_FORMAT = "yyyy-MM-dd";
    private static String TIME_FORMAT = "HH:mm";

    public static final long TIME_ONE_HOUR = 3600L * 1000L;

    public static final long TIME_ONE_DAY = 24L * TIME_ONE_HOUR;

    /**
     * Get the previous time, from how many days to now.
     * 
     * @param days How many days.
     * @return The new previous time.
     */
    public static long previous(int days) {
        return System.currentTimeMillis() - 3600000L * 24L * days;
    }

    /**
     * Get the next time, from how many days to now.
     * 
     * @param days How many days.
     * @return The new next time.
     */
    public static long next(int days) {
        return System.currentTimeMillis() + 3600000L * 24L * days;
    }

    /**
     * Convert date and time to string like "yyyy-MM-dd HH:mm".
     */
    public static String formatDateTime(Date d) {
        return new SimpleDateFormat(DATETIME_FORMAT).format(d);
    }

    /**
     * Convert time to string like "HH:mm".
     */
    public static String formatTime(Date d) {
        return new SimpleDateFormat(TIME_FORMAT).format(d);
    }

    /**
     * Convert date and time to string like "yyyy-MM-dd HH:mm".
     */
    public static String formatDateTime(long d) {
        return new SimpleDateFormat(DATETIME_FORMAT).format(d);
    }

    /**
     * Convert date to String like "yyyy-MM-dd".
     */
    public static String formatDate(Date d) {
        return new SimpleDateFormat(DATE_FORMAT).format(d);
    }

    /**
     * Parse date like "yyyy-MM-dd".
     */
    public static Date parseDate(String d) {
        try {
            return new SimpleDateFormat(DATE_FORMAT).parse(d);
        }
        catch(ParseException e) {}
        return null;
    }

    /**
     * Parse date and time like "yyyy-MM-dd hh:mm".
     */
    public static Date parseDateTime(String dt) {
        try {
            return new SimpleDateFormat(DATETIME_FORMAT).parse(dt);
        }
        catch(Exception e) {}
        return null;
    }

    private static final int[] DAYS = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};

    /**
     * Return today's year, month(1-12), day(1-31), week(0-6, for SUN, MON, ... SAT).
     */
    public static int[] getToday() {
        return getDate(Calendar.getInstance());
    }

    /**
     * Return today's time with hour offset.
     */
    public static long getToday(int hourOffset) {
        Calendar c = Calendar.getInstance();
        c.setTimeInMillis(System.currentTimeMillis());
        c.set(Calendar.HOUR_OF_DAY, hourOffset);
        c.clear(Calendar.MINUTE);
        c.clear(Calendar.SECOND);
        c.clear(Calendar.MILLISECOND);
        return c.getTimeInMillis();
    }

    /**
     * Return day's year, month(1-12), day(1-31), week(0-6, for SUN, MON, ... SAT).
     */
    public static int[] getDate(long t) {
        Calendar c = Calendar.getInstance();
        c.setTimeInMillis(t);
        return getDate(c);
    }

    /**
     * Return day's year, month(1-12), day(1-31), week(0-6, for SUN, MON, ... SAT).
     */
    public static int[] getDate(Calendar c) {
        int week = c.get(Calendar.DAY_OF_WEEK)-1;
        if(week==0)
            week = 7;
        return new int[] {
                c.get(Calendar.YEAR),
                c.get(Calendar.MONTH) + 1,
                c.get(Calendar.DAY_OF_MONTH),
                week
        };
    }

    /**
     * Return day's year, month(1-12), day(1-31), week(0-6, for SUN, MON, ... SAT), hour, minute, second.
     */
    public static int[] getTime(long t) {
        Calendar c = Calendar.getInstance();
        c.setTimeInMillis(t);
        return getTime(c);
    }

    /**
     * Return day's year, month(1-12), day(1-31), week(0-6, for SUN, MON, ... SAT), hour, minute, second.
     */
    public static int[] getTime(Calendar c) {
        int week = c.get(Calendar.DAY_OF_WEEK)-1;
        if(week==0)
            week = 7;
        return new int[] {
                c.get(Calendar.YEAR),
                c.get(Calendar.MONTH) + 1,
                c.get(Calendar.DAY_OF_MONTH),
                week,
                c.get(Calendar.HOUR_OF_DAY),
                c.get(Calendar.MINUTE),
                c.get(Calendar.SECOND)
        };
    }

    /**
     * Get Calendar instance by specified year, month and day.
     * 
     * @param year 4-digit year.
     * @param month Month range is 1-12.
     * @param day Day range is 1-?, end depends on year and month.
     * @return A Calendar instance.
     */
    public static Calendar getCalendar(int year, int month, int day) {
        if(year<2000 || year>2100)
            throw new IllegalArgumentException();
        if(month<1 || month>12)
            throw new IllegalArgumentException();
        if(day<1)
            throw new IllegalArgumentException();
        if(month==2 && isLeapYear(year)) {
            if(day>29)
                throw new IllegalArgumentException();
        }
        else {
            if(day>DAYS[month-1])
                throw new IllegalArgumentException();
        }
        month--;
        Calendar c = Calendar.getInstance();
        c.set(Calendar.YEAR, year);
        c.set(Calendar.MONTH, month);
        c.set(Calendar.DAY_OF_MONTH, day);
        c.set(Calendar.HOUR_OF_DAY, 0);
        c.set(Calendar.MINUTE, 0);
        c.set(Calendar.SECOND, 0);
        c.set(Calendar.MILLISECOND, 0);
        return c;
    }

    public static boolean isLeapYear(int year) {
        if(year % 100==0) {
            return year % 400==0;
        }
        return year % 4==0;
    }

    public static String format(int hour, int minute, String format) {
        if("HH-mm".equals(format)) {
            StringBuilder sb = new StringBuilder(5);
            if(hour<10)
                sb.append('0');
            sb.append(hour).append(':');
            if(minute<10)
                sb.append('0');
            return sb.append(minute).toString();
        }
        Calendar c = Calendar.getInstance();
        c.set(Calendar.HOUR_OF_DAY, hour);
        c.set(Calendar.MINUTE, minute);
        c.set(Calendar.SECOND, 0);
        return new SimpleDateFormat(format).format(c.getTime());
    }

    public static String format(int year, int month, int day, String format) {
        if("MM-dd".equals(format)) {
            StringBuilder sb = new StringBuilder(5);
            return sb.append(month).append('-').append(day).toString();
        }
        if("yyyy-MM-dd".equals(format)) {
            StringBuilder sb = new StringBuilder(10);
            return sb.append(year).append('-').append(month).append('-').append(day).toString();
        }
        Calendar c = getCalendar(year, month, day);
        return new SimpleDateFormat(format).format(c.getTime());
    }

    public static int[] getPreviousDay(int year, int month, int day) {
        day--;
        if (day < 1) {
            month --;
            if (month < 1) {
                year --;
                month = 12;
            }
            int lastDay = DAYS[month-1];
            if(month==2 && isLeapYear(year))
                lastDay++;
            day = lastDay;
        }
        return new int[] { year, month, day };
    }

    public static int[] getNextDay(int year, int month, int day) {
        day++;
        int max = DAYS[month-1];
        if(month==2 && isLeapYear(year))
            max++;
        if (day > max) {
            day = 1;
            month ++;
            if (month > 12) {
                year++;
                month = 1;
            }
        }
        return new int[] { year, month, day };
    }
}

⌨️ 快捷键说明

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