• java 时间的原生操作和工具类操作


    package com.xc.test.dateoperation;
    
    import org.apache.commons.lang3.time.DateFormatUtils;
    import org.apache.commons.lang3.time.DateUtils;
    
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Calendar;
    import java.util.Date;
    import java.util.Iterator;
    
    public class DateMain {
    
        public static void main(String[] args) throws ParseException {
    
            Date now = new Date();
            // System.out.println("now:" + now);// Fri Aug 16 14:51:39 CST 2019
    
            //日期add
            {
                // 封装Calendar类add方法
                {
                    Date date = add(now, Calendar.DAY_OF_MONTH, 1);//增加天数
                    // System.out.println("date:" + date);// Sat Aug 17 14:51:39 CST 2019
                    Date date2 = add(now, Calendar.MINUTE, 1);//增加分钟
                    // System.out.println("date2:" + date2);// Fri Aug 16 14:52:39 CST 2019
                }
                // 通过DateUtils工具类
                {
                    Date date = DateUtils.addDays(now, 1);//增加天数
                    // System.out.println("date:" + date);// Sat Aug 17 14:51:39 CST 2019
                    Date date2 = DateUtils.addMinutes(now, 1);//增加分钟
                    // System.out.println("date2:" + date2);// Fri Aug 16 14:52:39 CST 2019
                }
            }
    
            //判断2个日期是不是同一天
            {
                // 判断Calendar的年,年所在的天数是否相等
                boolean sameDay = isSameDay(now, now);
                // System.out.println(sameDay);//true
                // 通过DateUtils工具类
                boolean sameDay2 = DateUtils.isSameDay(now, now);
                // System.out.println(sameDay2);//true
            }
    
            /*
            获取一段日期
            RANGE_WEEK_SUNDAY 从周日开始获取一周日期
            RANGE_WEEK_MONDAY 从周一开始获取一周日期
            RANGE_WEEK_RELATIVE 从当前时间开始获取一周日期
            RANGE_WEEK_CENTER 以当前日期为中心获取一周日期
            RANGE_MONTH_SUNDAY 从周日开始获取一个月日期
            RANGE_MONTH_MONDAY 从周一开始获取一个月日期
             */
            Iterator<Calendar> iterator = DateUtils.iterator(now, DateUtils.RANGE_MONTH_SUNDAY);
            while (iterator.hasNext()) {
                Calendar next = iterator.next();
                // System.out.println("next:" + next);
                String format = DateFormatUtils.format(next, "yyyy-MM-dd HH:mm:ss");
                // System.out.println("format:" + format);
            }
    
            // 解析时间字符串
            {
                // 使用SimpleDateFormat类
                {
                    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                    Date date = sdf.parse("2019-08-16 15:36:16");
                    // System.out.println("date:" + date);//Fri Aug 16 15:36:16 CST 2019
                }
                // 通过DateUtils工具类
                {
                    Date date = DateUtils.parseDate("2019-08-16 15:36:16", "yyyy-MM-dd HH:mm:ss");
                    // System.out.println("date:" + date);//Fri Aug 16 15:36:16 CST 2019
                }
            }
    
            // 设置日期时间
            {
                // 封装Calendar的set方法
                {
                    Date date = set(now, Calendar.DAY_OF_MONTH, 1);
                    // System.out.println(date);//Thu Aug 01 16:04:08 CST 2019
                    String format = DateFormatUtils.format(date, "yyyy-MM-dd HH:mm:ss");
                    // System.out.println("format:" + format);//2019-08-01 16:04:08
                }
                // 通过DateUtils工具类
                {
                    Date date = DateUtils.setDays(now, 1);
                    // System.out.println(date);//Thu Aug 01 16:04:08 CST 2019
                    String format = DateFormatUtils.format(date, "yyyy-MM-dd HH:mm:ss");
                    // System.out.println("format:" + format);//2019-08-01 16:04:08
                }
            }
    
            //计算两个时间隔多少天
            {
                int intervalDate = intervalDate(now, now);
                // System.out.println("intervalDate:" + intervalDate);//0
            }
    
        }
    
        // 计算两个时间隔多少天
        public static int intervalDate(Date startDate, Date endDate) {
            long startTime2 = startDate.getTime();
            long endTime2 = endDate.getTime();
            int amount = (int) ((endTime2 - startTime2) / (1000 * 3600 * 24));
            return amount;
        }
    
        /**
         * 设置日期时间
         *
         * @param date          待修改的日期
         * @param calendarField 设置的单位
         * @param amount        设置的数值
         * @return Date 设置后的日期
         */
        private static Date set(Date date, int calendarField, int amount) {
            Calendar c = Calendar.getInstance();
            c.setLenient(false);
            c.setTime(date);
            c.set(calendarField, amount);
            return c.getTime();
        }
    
        /**
         * 判断2个日期是不是同一天
         *
         * @param date1 待比较日期1
         * @param date2 待比较日期2
         * @return boolean
         */
        public static boolean isSameDay(Date date1, Date date2) {
            Calendar cal1 = Calendar.getInstance();
            cal1.setTime(date1);
            Calendar cal2 = Calendar.getInstance();
            cal2.setTime(date2);
            return cal1.get(Calendar.YEAR) == cal2.get(Calendar.YEAR) &&
                    cal1.get(Calendar.DAY_OF_YEAR) == cal2.get(Calendar.DAY_OF_YEAR);
        }
    
    
        /**
         * 日期add
         *
         * @param date          待增日期
         * @param calendarField 增加单位
         * @param amount        增加数量
         * @return Date 增加后日期
         */
        private static Date add(final Date date, int calendarField, int amount) {
            Calendar c = Calendar.getInstance();
            c.setTime(date);
            c.add(calendarField, amount);
            return c.getTime();
        }
    
    
    }
  • 相关阅读:
    HTML5标签变化
    接口测试基础入门学习
    1.1Axure简介
    win 7命令行大全
    程序集强签名
    源代码的文件头格式化
    redmine2.3环境搭建
    静态成员和方法的使用场合及利弊分析
    .Net Memory Profiler入门
    TransactionScope类
  • 原文地址:https://www.cnblogs.com/ooo0/p/11364577.html
Copyright © 2020-2023  润新知