时间的类型转换及定义Date工具类

1:Date类型转换为字符串

	Date date = DateUtil.date();
    // 年月日2022-03-31
    System.out.println("年月日" + DateUtil.formatDate(date));
    // 时分秒16:49:08
    System.out.println("时分秒" + DateUtil.formatTime(date));
    // 年月日 时分秒2022-03-31 16:49:08
    System.out.println("年月日 时分秒" + DateUtil.formatDateTime(date));
	//SimpleDateFormat进行时间的转换
    SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");
    //时间Date转字符串
    String format1 = format.format(date);
    //20220331
    System.out.println(format1);

2:字符串时间转Date

//说明:格式是“20201010”、“2020-1010”或者“2020.10.10”,要转换为Date都是用Hutool中的DateUtil.parse()方式,parse()会自动识别字符串获得Date类型数据,获取到的date格式是2020-10-10类型。这样就不需要判断用户输入的是什么类型的时间字符串。

	String strTime = "2020.10.10";
    // 输出2020-10-10 00:00:00
    Date date = DateUtil.parse(strTime);
    System.out.println("字符串转时间:" + date);

    // 如果字符串时间不是完整格式,例如2020-10
    //注意:如果字符串的格式为2020.02,没有完整日期,DateUtil.parse()会识别不出来,要通过后面加上格式样式才可以。
    String strTime2 = "2020-10";
    // 输出 2020-10-01 00:00:00
    Date date2 = DateUtil.parse(strTime2,"yyyy-MM");
    System.out.println("时间转字符串:" + date2);
    //SimpleDateFormat进行时间的转换
    SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");
    //字符串转时间Date
    try {
        Date parse = format.parse("2022-03-31");
        //输出Fri Dec 03 00:00:00 CST 2021
        System.out.println(parse);
    } catch (ParseException e) {
        e.printStackTrace();
    }

3:自定义一个时间工具类

import com.google.common.collect.Lists;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;

public class DateUtils {
    /**
     * 获取指定日期的开始时间,即指定日期的凌晨
     * @param 	date
     * @return  Thu Mar 31 00:00:00 CST 2022
     */
    public static Date getStartDate(Date date) {
        Calendar instance = Calendar.getInstance();
        instance.setTime(date);
        instance.set(Calendar.HOUR_OF_DAY, 0);
        instance.set(Calendar.MINUTE, 0);
        instance.set(Calendar.SECOND, 0);
        return instance.getTime();
    }

    /**
     * 获取指定日期的结束时间 即指定日期的23:59:59
     * @param 	date
     * @return 	Thu Mar 31 23:59:59 CST 2022
     */
    public static Date getEndDate(Date date) {
        Calendar instance = Calendar.getInstance();
        instance.setTime(date);
        instance.set(Calendar.HOUR_OF_DAY, 23);
        instance.set(Calendar.MINUTE, 59);
        instance.set(Calendar.SECOND, 59);
        return instance.getTime();
    }

    /**
     * 获取过去或者未来任意天内的日期数组
     * @param intervals
     * @param flag
     * @return
     */
    public static ArrayList<Date> getDayList(Integer intervals, Boolean flag) {
        if (flag) {
            ArrayList<Date> pastDaysList = Lists.newArrayList();
            for (int i = 0; i < intervals; i++) {
                pastDaysList.add(getPastDate(i));
            }
            return pastDaysList;
        } else {
            ArrayList<Date> futureDaysList = Lists.newArrayList();
            for (int i = 0; i < intervals; i++) {
                futureDaysList.add(getFutureDate(i));
            }
            return futureDaysList;
        }
    }

    /**
     * 获取过去几天内的日期时间
     * @param 	past
     * @return	带有时分秒的具体时间
     */
    public static Date getPastDate(Integer past) {
        Calendar calendar = Calendar.getInstance();
        calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) - past);
        return calendar.getTime();
    }

    /**
     * 获取未来几天内的日期时间
     * @param 	past
     * @return	带有时分秒的具体时间
     */
    public static Date getFutureDate(Integer past) {
        Calendar calendar = Calendar.getInstance();
        calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + past);
        return calendar.getTime();
    }

	/**
     * 获取日期差
     * @param 	beforeDate,currentDate
     * @return	整数时间
     */
	public static int differentDays(Date beforeDate, Date currentDate) {
        Calendar cal1 = Calendar.getInstance();
        cal1.setTime(beforeDate);

        Calendar cal2 = Calendar.getInstance();
        cal2.setTime(currentDate);
        int day1 = cal1.get(Calendar.DAY_OF_YEAR);
        int day2 = cal2.get(Calendar.DAY_OF_YEAR);

        int year1 = cal1.get(Calendar.YEAR);
        int year2 = cal2.get(Calendar.YEAR);
        if (year1 != year2)   //跨年
        {
            int timeDistance = 0;
            for (int i = year1; i < year2; i++) {
                if (i % 4 == 0 && i % 100 != 0 || i % 400 == 0)    //闰年
                {
                    timeDistance += 366;
                } else    //不是闰年
                {
                    timeDistance += 365;
                }
            }
            return timeDistance + (day2 - day1);
        } else    //同年
        {
            System.out.println("判断day2 - day1 : " + (day2 - day1));
            return day2 - day1;
        }
    }


}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值