DateUtils.java 7.18 KB
package com.server.utils;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;

/**
 * @author ZMS
 */
public class DateUtils {

    public static long MINUTE_PER_HOUR = 60; // 一个小时有多少分钟
    public static long MINUTE_PER_DAY = 1440; // 一天有多少分钟
    public static long HOUT_PER_DAY = 24; // 一天有多少小时
    public static long SECOND_PER_MINUTE = 60; // 一分钟有多少秒
    public static long SECOND_PER_HOUR = 3600; // 一个小时有多少秒
    public static long SECOND_PER_DAY = 86400; // 一天有多少秒
    public static long MILLIS_PER_SECOND = 1000; // 一秒钟有多少毫秒
    public static long MILLIS_PER_MINUTE = 60000; // 一分钟有多少毫秒
    public static long MILLIS_PER_HOUR = 3600000; // 一个小时有多少毫秒
    public static long MILLIS_PER_DAY = 86400000; // 一天有多少毫秒
    public static long NANO_PER_MILLIS = 1000000; // 一毫秒有多少纳秒

    /**
     * formate date
     *
     * @param formatter
     * @param time
     * @return
     */
    public static String format(String formatter, long time) {
        return new SimpleDateFormat(formatter).format(new Date(time));
    }

    public static String format(String formatter, Date time) {
        return new SimpleDateFormat(formatter).format(time);
    }

    public static String format(Date time) {
        return new SimpleDateFormat("yyyy-MM-dd").format(time);
    }

    /**
     * rawoffset
     *
     * @param time
     * @return
     */
    public static long getRawOffsetMils(long time) {
        return time + TimeZone.getDefault().getRawOffset();
    }

    /**
     * 拆分时间
     *
     * @param timeMils
     * @return
     */
    public static long[] splitTime(long timeMils) {
        if (timeMils <= 0) {
            return new long[]{0, 0, 0, 0};
        }
        long day = timeMils / 86400000;
        long hour = (timeMils % 86400000) / 3600000;
        long min = (timeMils % 3600000) / 60000;
        long sec = (timeMils % 60000) / 1000;
        return new long[]{day, hour, min, sec};
    }

    public static Date parse(String format, String str) throws ParseException {
        return new SimpleDateFormat(format).parse(str);
    }

    public static Date firstDayOfMonth() {
        Calendar c = Calendar.getInstance();
        c.set(Calendar.DAY_OF_MONTH, 1);
        c.set(Calendar.HOUR_OF_DAY, 0);
        c.set(Calendar.MINUTE, 0);
        c.set(Calendar.SECOND, 0);
        c.set(Calendar.MILLISECOND, 0);
        return c.getTime();
    }

    public static Date lastDayOfMonth() {
        Calendar c = Calendar.getInstance();
        c.set(Calendar.DAY_OF_MONTH, c.getActualMaximum(Calendar.DAY_OF_MONTH));
        c.set(Calendar.HOUR_OF_DAY, c.getMaximum(Calendar.HOUR_OF_DAY));
        c.set(Calendar.MINUTE, c.getMaximum(Calendar.MINUTE));
        c.set(Calendar.SECOND, c.getMaximum(Calendar.SECOND));
        c.set(Calendar.MILLISECOND, c.getMaximum(Calendar.MILLISECOND));
        return c.getTime();
    }

    public static Date firstDayOfMonth(int year, int month) {
        Calendar c = Calendar.getInstance();
        c.set(Calendar.YEAR, year);
        c.set(Calendar.MONTH, month);
        c.set(Calendar.DAY_OF_MONTH, 1);
        c.set(Calendar.HOUR_OF_DAY, 0);
        c.set(Calendar.MINUTE, 0);
        c.set(Calendar.SECOND, 0);
        c.set(Calendar.MILLISECOND, 0);
        return c.getTime();
    }

    public static Date lastDayOfMonth(int year, int month) {
        Calendar c = Calendar.getInstance();
        c.set(Calendar.YEAR, year);
        c.set(Calendar.MONTH, month);
        c.set(Calendar.DAY_OF_MONTH, c.getActualMaximum(Calendar.DAY_OF_MONTH));
        c.set(Calendar.HOUR_OF_DAY, c.getMaximum(Calendar.HOUR_OF_DAY));
        c.set(Calendar.MINUTE, c.getMaximum(Calendar.MINUTE));
        c.set(Calendar.SECOND, c.getMaximum(Calendar.SECOND));
        c.set(Calendar.MILLISECOND, c.getMaximum(Calendar.MILLISECOND));
        return c.getTime();
    }

    public static int getMonthDayCount(int year, int month) {
        Calendar c = Calendar.getInstance();
        c.set(Calendar.YEAR, year);
        c.set(Calendar.MONTH, month);
        return c.getActualMaximum(Calendar.DAY_OF_MONTH);
    }

    public static long getStartTimeOfDate(long time) {
        Calendar c = Calendar.getInstance();
        c.setTimeInMillis(time);
        c.set(Calendar.HOUR_OF_DAY, 0);
        c.set(Calendar.MINUTE, 0);
        c.set(Calendar.SECOND, 0);
        c.set(Calendar.MILLISECOND, 0);
        return c.getTimeInMillis();
    }

    public static long curDay() {
        return getRawOffsetMils(System.currentTimeMillis()) / MILLIS_PER_DAY;
    }

    public static long curHour() {
        return getRawOffsetMils(System.currentTimeMillis()) / MILLIS_PER_HOUR;
    }

    public static long curMinute() {
        return getRawOffsetMils(System.currentTimeMillis()) / MILLIS_PER_MINUTE;
    }

    /**
     * 时间比较(如果myDate>compareDate返回1,<返回-1,相等返回0)
     *
     * @param myDate      时间
     * @param compareDate 要比较的时间
     * @return int
     */
    public static int dateCompare(Date myDate, Date compareDate) {
        Calendar myCal = Calendar.getInstance();
        Calendar compareCal = Calendar.getInstance();
        myCal.setTime(myDate);
        compareCal.setTime(compareDate);
        return myCal.compareTo(compareCal);
    }

    /**
     * 时间加减天数
     *
     * @param startDate 要处理的时间,Null则为当前时间
     * @param days      加减的天数
     * @return Date
     */
    public static Date dateAddDays(Date startDate, int days) {
        if (startDate == null) {
            startDate = new Date();
        }
        Calendar c = Calendar.getInstance();
        c.setTime(startDate);
        c.set(Calendar.DATE, c.get(Calendar.DATE) + days);
        return c.getTime();
    }


    public static int dateCompare(String myDate, String compareDate, String dateformat) {
        Date myDate2 = null;
        Date compareDate2 = null;
        try {
            myDate2 = new SimpleDateFormat(dateformat).parse(myDate);
            compareDate2 = new SimpleDateFormat(dateformat).parse(compareDate);
        } catch (ParseException e) {
            e.printStackTrace();
        }

        Calendar myCal = Calendar.getInstance();
        Calendar compareCal = Calendar.getInstance();
        myCal.setTime(myDate2);
        compareCal.setTime(compareDate2);
        return myCal.compareTo(compareCal);
    }

    /**
     * 获取当月所有天
     *
     * @return
     */
    public static List<String> getDayListOfMonth() {
        List<String> list = new ArrayList<String>();
        Calendar aCalendar = Calendar.getInstance(Locale.CHINA);
        int year = aCalendar.get(Calendar.YEAR);//年份
        int month = aCalendar.get(Calendar.MONTH) + 1;//月份
        int day = aCalendar.getActualMaximum(Calendar.DATE);
        for (int i = 1; i <= day; i++) {
            String aDate = (month < 10 ? (("0") + month) : month) + "/" + (i < 10 ? ("0" + i) : i);
            list.add(aDate);
        }
        return list;
    }


    public static void main(String[] args) {
        List<String> list = getDayListOfMonth();
        System.out.println(list);
    }


}