zoukankan      html  css  js  c++  java
  • 日期工具类

    import java.sql.Timestamp;
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.ArrayList;
    import java.util.Calendar;
    import java.util.Date;
    import java.util.List;
    
    public class DateTimeUtil {
    
        public static Date formatDate(String str) throws ParseException {
            SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            return formatter.parse(str);
        }
    
        public static Date getDayStartTime(Date date) {
            Calendar cal = Calendar.getInstance();
            cal.setTime(date);
            cal.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONTH), cal.get(Calendar.DAY_OF_MONTH), 0, 0, 0);
    
            return cal.getTime();
        }
    
    
        public static boolean isZero(Date date) {
            Calendar cal = Calendar.getInstance();
            cal.setTime(date);
            if (cal.get(Calendar.HOUR_OF_DAY) == 0 && cal.get(Calendar.MINUTE) == 0 && cal.get(Calendar.SECOND) == 0) {
                return true;
            }
            return false;
        }
    
        public static Date getDayEndTime24(Date date) {
            Calendar cal = Calendar.getInstance();
            cal.setTime(date);
            cal.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONTH), cal.get(Calendar.DAY_OF_MONTH), 24, 0, 0);
    
            return cal.getTime();
    
        }
    
        public static Date getDate(Date date, Integer time, Field field) {
            Calendar cal = Calendar.getInstance();
            cal.setTime(date);
            switch (field) {
                case YEAR:
                    cal.add(Calendar.YEAR, time);
                    break;
                case MONTH:
                    cal.add(Calendar.MONTH, time);
                    break;
                case DAY:
                    cal.add(Calendar.DAY_OF_MONTH, time);
                    break;
                case HOURS:
                    cal.add(Calendar.HOUR_OF_DAY, time);
                    break;
                case MINUTE:
                    cal.add(Calendar.MINUTE, time);
                    break;
                case SECOND:
                    cal.add(Calendar.SECOND, time);
                    break;
            }
            return cal.getTime();
        }
    
        //17:29:13  09:02:12
        public static Long getDifferTime(Date start, Date end, Field field) {
            long time = start.getTime() - end.getTime();
            switch (field) {
                case DAY:
                    return time / (24 * 60 * 60 * 1000);
                case HOURS:
                    return time / (60 * 60 * 1000);
                case MINUTE:
                    return time / (60 * 1000);
                case SECOND:
                    return time / (1000);
            }
            return null;
        }
    
        public static String getString(Date date, String pattern) {
            SimpleDateFormat formatter = new SimpleDateFormat(pattern);
            return formatter.format(date);
        }
    
        public static String format(Date date, String stly) {
            String result = "";
            String str = "yyyy-MM-dd HH:mm:ss";
            if (stly != null && !stly.equals("")) str = stly;
            try {
                if (date != null) {
                    java.text.DateFormat df = new SimpleDateFormat(str);
                    result = df.format(date);
                }
            } catch (Exception e) {
            }
            return result;
        }
    
        public static Date parse(String dataStr, String pattern) {
            SimpleDateFormat formatter = new SimpleDateFormat(pattern);
    
            Date time = null;
            try {
                time = formatter.parse(dataStr);
            } catch (ParseException e) {
    
            }
            return time;
        }
    
        public static List<Date> getCurrAgo(Date startTime, Date endTime) {
            List<Date> result = new ArrayList<Date>();
    
            Calendar tempStart = Calendar.getInstance();
            tempStart.setTime(startTime);
            tempStart.add(Calendar.DAY_OF_YEAR, 1);
            tempStart.set(Calendar.HOUR_OF_DAY, 0);
            tempStart.set(Calendar.SECOND, 0);
            tempStart.set(Calendar.MINUTE, 0);
            tempStart.set(Calendar.MILLISECOND, 0);
    
            startTime = tempStart.getTime();
    
            while (startTime.getTime() <= endTime.getTime()) {
                result.add(tempStart.getTime());
                tempStart.add(Calendar.DAY_OF_YEAR, 1);
                startTime = tempStart.getTime();
            }
    
            return result;
        }
    
        /**
         * 格式化Timestamp 为 yyyy-MM-dd HH:mm:ss
         */
        public static String getDateTimeFromTimeStamp2(Timestamp _timestamp) {
            if (null == _timestamp) {
                return "";
            }
            SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//定义格式,不显示毫秒
            String str = df.format(_timestamp);
            return str;
        }
    
        /**
         * 格式化Timestamp 为 yyyy-MM-dd
         */
        public static String getDateTimeFromTimeStamp(Timestamp _timestamp) {
            if (null == _timestamp) {
                return "";
            }
            SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");//定义格式,不显示毫秒
            String str = df.format(_timestamp);
            return str;
        }
    
        /**
         * 获取零点时间
         *
         * @param flag 0:获取当天0点,1:获取当天23:59:59
         */
        public static Date getZeroTime(Date date, int flag) {
            Calendar cal = Calendar.getInstance();
            cal.setTime(date);
            int hour = cal.get(Calendar.HOUR_OF_DAY);
            int minute = cal.get(Calendar.MINUTE);
            int second = cal.get(Calendar.SECOND);
            //时分秒(毫秒数)
            long millisecond = hour * 60 * 60 * 1000 + minute * 60 * 1000 + second * 1000;
            //凌晨00:00:00
            cal.setTimeInMillis(cal.getTimeInMillis() - millisecond);
    
            SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    
            if (flag == 0) {
                return cal.getTime();
            } else if (flag == 1) {
                //凌晨23:59:59
                cal.setTimeInMillis(cal.getTimeInMillis() + 23 * 60 * 60 * 1000 + 59 * 60 * 1000 + 59 * 1000);
            }
            return cal.getTime();
        }
    
    
        /**
         * 获取当前月份第一天0点
         */
        public static Date getZeroTimeFirstDayOfMonth() {
            Calendar cal = Calendar.getInstance();
            cal.add(Calendar.MONTH, 0);
            cal.set(Calendar.DAY_OF_MONTH, 1);//设置为1号,当前日期既为本月第一天
            cal.set(Calendar.HOUR_OF_DAY, 0);
            cal.set(Calendar.MINUTE, 0);
            cal.set(Calendar.SECOND, 0);
            cal.set(Calendar.MILLISECOND, 0);
            return cal.getTime();
        }
    
    
        /**
         * 获取当前月份最后一天23.59.59
         */
        public static Date getZeroTimeLastDayOfMonth() {
            //获取当前月最后一天
            Calendar cal = Calendar.getInstance();
            cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DAY_OF_MONTH));
            cal.set(Calendar.HOUR_OF_DAY, 23);
            cal.set(Calendar.MINUTE, 59);
            cal.set(Calendar.SECOND, 59);
            cal.set(Calendar.MILLISECOND, 59);
            return cal.getTime();
        }
    
    
        /**
         * 获取一天前的时间
         */
        public static Date getOneDayAgo(Date date) throws Exception {
            Calendar cal = Calendar.getInstance();
            cal.setTime(date);
            cal.add(Calendar.DAY_OF_MONTH, -1);
            return cal.getTime();
        }
    
        public static enum Field {
            YEAR,
            MONTH,
            DAY,
            HOURS,
            MINUTE,
            SECOND
        }
       /**
        *late日期-early日期
        **/
        public static int daysBetween(Date early, Date late) {
            Calendar calst = Calendar.getInstance();
            Calendar caled = Calendar.getInstance();
            calst.setTime(early);
            caled.setTime(late);
            calst.set(Calendar.HOUR_OF_DAY, 0);
            calst.set(Calendar.MINUTE, 0);
            calst.set(Calendar.SECOND, 0);
            caled.set(Calendar.HOUR_OF_DAY, 0);
            caled.set(Calendar.MINUTE, 0);
            caled.set(Calendar.SECOND, 0);
            //得到两个日期相差的天数
    
            return ((int) (caled.getTime().getTime() / 1000) - (int) (calst.getTime().getTime() / 1000)) / 3600 / 24;
        }
    
        public static Date addDays(Date date, Integer days) {
            Calendar calendar = Calendar.getInstance();
            calendar.setTime(date);
            calendar.set(Calendar.DAY_OF_MONTH, days);
            return calendar.getTime();
        }
    
        public static String timeStamp2Date(String timestampString) {
            Long timestamp = Long.parseLong(timestampString) * 1000;
            return new SimpleDateFormat("yyyy-MM-dd").format(new Date(timestamp));
        }
    
        /**
         * 得到两个日期之间查几天。
         * @param date1
         * @param date2
         * @return
         */
        public static int getOffsetIn2Date(Date date1, Date date2) {
            long offsetNum = date1.getTime() - date2.getTime();
            return ((Double)Math.ceil(offsetNum / (60 * 60 * 24 * 1000D))).intValue();
        }
    
        /**
         * @Description //把时间戳转换为date
         * @Param [s]
         * @return
         **/
        public static Date stampToDate(long s){
            Date date = new Date(s*1000);
            return date;
        }
        /**
         *
         * @Description //时间date+周期days=得到相加后的日期
         * @Param [date, days]
         * @return
         *
         **/
        public static Date dayAfter(Date date, int days) {
            Calendar calendar = getZero(date);
            calendar.add(Calendar.DAY_OF_MONTH, days);
            return calendar.getTime();
        }
        public static Calendar getZero(Date date) {
            Calendar calendar = Calendar.getInstance();
            calendar.setTime(date);
            calendar.set(Calendar.HOUR_OF_DAY, 0);
            calendar.set(Calendar.MINUTE, 0);
            calendar.set(Calendar.SECOND, 0);
            calendar.set(Calendar.MILLISECOND, 0);
            return calendar;
        }
    
        // public static void main(String[] args) {
        //     String startProductionDate = DateTimeUtil.timeStamp2Date("1536049980");
    
        //     String endProductionDate = DateTimeUtil.timeStamp2Date("1536222780");
    
        //     System.out.println(endProductionDate);
    
        //     int days = DateTimeUtil.daysBetween(DateTimeUtil.parse(startProductionDate, "yyyy-MM-dd"), DateTimeUtil.parse(endProductionDate, "yyyy-MM-dd"));
    
        //     System.out.println(days);
    
        //     SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        //     Date testDate=DateTimeUtil.dayAfter(new Date(),30);
        //     System.out.println(sdf.format(testDate));
    
    
        // }
    }
    

      

  • 相关阅读:
    洛谷 P4160 [SCOI2009]生日快乐 题解
    洛谷 P1041 传染病控制 题解
    洛谷 P3154 [CQOI2009]循环赛 题解
    洛谷 P1144 最短路计数 题解
    洛谷 P2296 寻找道路 题解
    洛谷 P1514 引水入城 题解
    洛谷 P2661 信息传递 题解
    洛谷 P3958 奶酪 题解
    洛谷 P3501 [POI2010]ANT-Antisymmetry 题解
    【LGR-069】洛谷 2 月月赛 II & EE Round 2 Div.2 A-C题解
  • 原文地址:https://www.cnblogs.com/ysg520/p/10697244.html
Copyright © 2011-2022 走看看