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

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

/**
 * 
 * @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 time
     * @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;
    }

}