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();
    }


}

 

posted @ 2019-08-16 16:07  草木物语  阅读(511)  评论(0编辑  收藏  举报