首页 > 其他分享 >hutool日期获取总结

hutool日期获取总结

时间:2022-09-19 11:44:21浏览次数:81  
标签:DateUtil parse1 dd hutool DateTime yyyy 获取 日期 date

//获取当前日期
DateUtil.date()
//今年最后时间
DateUtil.endOfYear(DateUtil.date())
//今天
DateUtil.parse(DateUtil.date(), "yyyy-MM-dd")
// 获取当前时间字符串,yyyy-MM-dd HH:mm:ss
String date = DateUtil.now()

//当前日期字符串,格式:yyyy-MM-dd
String today= DateUtil.today();

 //当前时间:date = 2019-09-17 16:59:23

        Date date = DateUtil.date();

 

格式化输出
String dateStr = "2017-03-01";
Date date = DateUtil.parse(dateStr);

//结果 2017/03/01
String format = DateUtil.format(date, "yyyy/MM/dd");

//常用格式的格式化,结果:2017-03-01
String formatDate = DateUtil.formatDate(date);

//结果:2017-03-01 00:00:00
String formatDateTime = DateUtil.formatDateTime(date);

//结果:00:00:00
String formatTime = DateUtil.formatTime(date);

 

开始和结束时间
有的时候我们需要获得每天的开始时间、结束时间,每月的开始和结束时间等等,DateUtil也提供了相关方法:


String dateStr = "2017-03-01 22:33:23";
Date date = DateUtil.parse(dateStr);

//一天的开始,结果:2017-03-01 00:00:00
Date beginOfDay = DateUtil.beginOfDay(date);

//一天的结束,结果:2017-03-01 23:59:59
Date endOfDay = DateUtil.endOfDay(date);

 

2)字符串转日期

/*DateUtil.parse方法会自动识别一些常用格式,包括:

yyyy-MM-dd HH:mm:ss

yyyy-MM-dd

HH:mm:ss

yyyy-MM-dd HH:mm

yyyy-MM-dd HH:mm:ss.SSS*/

//这四种情况均可以转换,并且输出结果均为: 2019-09-17 00:00:00

Date date1 = DateUtil.parse("2019-09-17");

Date date2 = DateUtil.parse("2019-09-17", "yyyy-MM-dd");

Date date3 = DateUtil.parse("2019/09/17", "yyyy/MM/dd");

Date date4 = DateUtil.parse("2019:09:17", "yyyy:MM:dd");

 
//虚岁来算
int age = DateUtil.age(DateUtil.parse("你的生日", "yyyy-MM-dd"),DateUtil.endOfYear(DateUtil.date()))+1;



1)Date、long、Calendar之间的相互转换

public static void main(String[] args) {

        //当前时间:date = 2019-09-17 16:59:23

        Date date = DateUtil.date();

        //当前时间:date2 = 2019-09-17 16:59:23

        Date date2 = DateUtil.date(Calendar.getInstance());

        //当前时间:date3 = 2019-09-17 16:59:23

        Date date3 = DateUtil.date(System.currentTimeMillis());

        //当前时间字符串:now = 2019-09-17 16:59:23

        String now = DateUtil.now();

        //当前日期字符串:today = 2019-09-17

        String today= DateUtil.today();

    }


2)字符串转日期

/*DateUtil.parse方法会自动识别一些常用格式,包括:

yyyy-MM-dd HH:mm:ss

yyyy-MM-dd

HH:mm:ss

yyyy-MM-dd HH:mm

yyyy-MM-dd HH:mm:ss.SSS*/

//这四种情况均可以转换,并且输出结果均为: 2019-09-17 00:00:00

Date date1 = DateUtil.parse("2019-09-17");

Date date2 = DateUtil.parse("2019-09-17", "yyyy-MM-dd");

Date date3 = DateUtil.parse("2019/09/17", "yyyy/MM/dd");

Date date4 = DateUtil.parse("2019:09:17", "yyyy:MM:dd");


3)格式化日期输出

Date date1 = DateUtil.parse("2019-09-17");

//结果: 2019/09/17

String format = DateUtil.format(date1, "yyyy/MM/dd");

//常用格式的格式化,结果:2017-03-01

String formatDate = DateUtil.formatDate(date1);

//结果:2019-09-17 00:00:00

String formatDateTime = DateUtil.formatDateTime(date1);

//结果:00:00:00

String formatTime = DateUtil.formatTime(date1);


4)获取Date对象的某个部分

Date date = DateUtil.date();

//获得年的部分:year = 2019

int year = DateUtil.year(date);

//获得月份,从0开始计数:month = 8

int month = DateUtil.month(date);

//获得月份枚举 :monthEnum = SEPTEMBER

Month monthEnum = DateUtil.monthEnum(date);


5)开始和结束时间

String now = DateUtil.now();

Date date = DateUtil.parse(now);

//一天的开始,结果:2019-09-17 00:00:00

Date beginOfDay = DateUtil.beginOfDay(date);

//一天的结束,结果:2019-09-17 23:59:59

Date endOfDay = DateUtil.endOfDay(date);

//一个月的开始

Date beginDate = DateUtil.beginOfMonth(date);

//一个月的结束

Date endDate = DateUtil.endOfMonth(date);


6)日期时间偏移

String now = DateUtil.now();

//date = 2019-09-17 17:35:35

Date date = DateUtil.parse(now);

//结果:newDate = 2019-09-19 17:35:35

Date newDate = DateUtil.offset(date, DateField.DAY_OF_MONTH, 2);

//常用偏移,结果:newDate2 = 2019-09-20 17:35:35

DateTime newDate2 = DateUtil.offsetDay(date, 3);

//常用偏移,结果:newDate3 = 2019-09-17 14:35:35

DateTime newDate3 = DateUtil.offsetHour(date, -3);

//针对当前时间,提供了简化的偏移方法(例如昨天、上周、上个月等):

//昨天

DateUtil.yesterday()

//明天

DateUtil.tomorrow()

//上周

DateUtil.lastWeek()

//下周

DateUtil.nextWeek()

//上个月

DateUtil.lastMonth()

//下个月

DateUtil.nextMonth()


7)日期时间差

Date date1 = DateUtil.parse("2019-09-20 17:35:35");

Date date2 = DateUtil.parse("2019-09-17 14:35:35");

//这里若date1和date2换位置,输出结果不变:betweenDay = 3

long betweenDay = DateUtil.between(date1, date2, DateUnit.DAY);


8)其它

//年龄:ageOfNow = 28

int ageOfNow = DateUtil.ageOfNow("1991-01-13");

//是否闰年:leapYear = false

boolean leapYear = DateUtil.isLeapYear(2019);


DateTime parse1 = DateUtil.parse("2022-8-25 02:30:00");
        DateTime parse2 = DateUtil.parse("2023-8-24 14:30:50");
        DateTime dateTime = DateUtil.beginOfDay(parse1);//获取某天的开始时间
        DateTime dateTime1 = DateUtil.beginOfHour(parse1);//获取某小时的开始时间
        DateTime dateTime2 = DateUtil.beginOfMinute(parse1);//获取某分钟的开始时间
        DateTime dateTime3 = DateUtil.beginOfMonth(parse1);//获取某月的开始时间
        DateTime dateTime4 = DateUtil.beginOfQuarter(parse1);//获取某季度的开始时间
        DateTime dateTime5 = DateUtil.beginOfSecond(parse1);//获取秒级别的开始时间,即毫秒部分设置为0
        DateTime dateTime6 = DateUtil.beginOfWeek(parse1);//获取某周的开始时间,周一定为一周的开始时间
        DateTime dateTime7 = DateUtil.beginOfWeek(parse1, true);//获取某周的开始时间,周一为一周的开始时间
        DateTime dateTime8 = DateUtil.beginOfWeek(parse1, false);//获取某周的开始时间,周日为一周的开始时间
        DateTime dateTime9 = DateUtil.beginOfYear(parse1);//获取某年的开始时间
        long between = DateUtil.between(parse1, parse2, DateUnit.DAY);//判断两个日期相差的时长,只保留绝对值,unit - 相差的单位:相差 天DateUnit.DAY、小时DateUnit.HOUR 等
        long between1 = DateUtil.between(parse1, parse2, DateUnit.DAY, false);//判断两个日期相差的时长
        long between2 = DateUtil.betweenDay(parse1, parse2, false);//判断两个日期相差的天数
        long between3 = DateUtil.betweenMonth(parse1, parse2, false);//计算两个日期相差月数,在非重置情况下,如果起始日期的天大于结束日期的天,月数要少算1(不足1个月)
        long between4 = DateUtil.betweenMs(parse1, parse2);//判断两个日期相差的毫秒数
        long between5 = DateUtil.betweenWeek(parse1, parse2, false);//计算指定时间区间内的周数
        long between6 = DateUtil.betweenYear(parse1, parse2, false);//计算两个日期相差年数,在非重置情况下,如果起始日期的月大于结束日期的月,年数要少算1(不足1年)
        DateTime ceiling = DateUtil.ceiling(parse1, DateField.DAY_OF_MONTH);//修改日期为某个时间字段结束时间
        int compare = DateUtil.compare(parse1, parse2);//null安全的日期比较,null对象排在末尾
        StopWatch stopWatch = DateUtil.createStopWatch();//创建秒表StopWatch,用于对代码块的执行时间计数
        long current = DateUtil.current();//当前时间的时间戳
        long currentSecond = DateUtil.currentSeconds();//当前时间的时间戳(秒)
        DateTime date = DateUtil.date();//当前时间,转换为DateTime对象
        DateTime date1 = DateUtil.date(Calendar.getInstance());//Calendar类型时间转为DateTime
        DateTime date2 = DateUtil.date(new Date());//Date类型时间转为DateTime
        DateTime date3 = DateUtil.date(1659001318084L);//Long类型时间转为DateTime,只支持毫秒级别时间戳,如果需要秒级别时间戳,请自行×1000
        DateTime dateTime10 = DateUtil.dateNew(new Date());//根据已有Date 产生新的DateTime对象
        DateTime dateTime11 = DateUtil.dateSecond();//当前时间,转换为DateTime对象,忽略毫秒部分
        int i = DateUtil.dayOfMonth(parse1);//获得指定日期是这个日期所在月份的第几天
        int i1 = DateUtil.dayOfWeek(parse1);//获得指定日期是星期几,1表示周日,2表示周一
        Week week = DateUtil.dayOfWeekEnum(parse1);//获得指定日期是星期几
        int i2 = DateUtil.dayOfYear(parse1);//获得指定日期是这个日期所在年的第几天
        DateTime dateTime12 = DateUtil.endOfDay(parse1);//获取某天的结束时间
        DateTime dateTime13 = DateUtil.endOfHour(parse1);//获取某小时的结束时间
        DateTime dateTime14 = DateUtil.endOfMinute(parse1);//获取某分钟的结束时间
        DateTime dateTime15 = DateUtil.endOfMonth(parse1);//获取某月的结束时间
        DateTime dateTime16 = DateUtil.endOfQuarter(parse1);//获取某季度的结束时间
        DateTime dateTime17 = DateUtil.endOfSecond(parse1);//获取秒级别的结束时间,即毫秒设置为999
        DateTime dateTime18 = DateUtil.endOfWeek(parse1);//获取某周的结束时间,周日定为一周的结束
        DateTime dateTime19 = DateUtil.endOfWeek(parse1, true);//获取某周的结束时间
        DateTime dateTime20 = DateUtil.endOfYear(parse1);//获取某年的结束时间
        String format = DateUtil.format(parse1, "yyyy-MM-dd HH:mm:ss");//根据特定格式格式化日期
        String s4 = DateUtil.formatDate(parse1);//格式化日期部分
        String s5 = DateUtil.formatDateTime(parse1);//格式化日期时间,格式 yyyy-MM-dd HH:mm:ss
        String s6 = DateUtil.formatTime(parse1);//格式化时间,格式 HH:mm:ss
        String s = DateUtil.formatBetween(parse1, parse2);//格式化日期间隔输出,精确到毫秒
        String s1 = DateUtil.formatBetween(parse1, parse2, BetweenFormatter.Level.HOUR);//格式化日期间隔输出
        String s2 = DateUtil.formatBetween(1659001318084L);//格式化日期间隔输出,精确到毫秒
        String s3 = DateUtil.formatBetween(1659001318084L, BetweenFormatter.Level.HOUR);//格式化日期间隔输出
        String chineseZodiac = DateUtil.getChineseZodiac(1995);//计算生肖,只计算1900年后出生的人
        int hour = DateUtil.hour(parse1, true);//获得指定日期的小时数部分
        boolean in = DateUtil.isIn(DateUtil.date(), parse1, parse2);//当前日期是否在日期指定范围内
        boolean leapYear = DateUtil.isLeapYear(1995);//是否闰年
        boolean sameDay = DateUtil.isSameDay(parse1, parse2);//比较两个日期是否为同一天
        boolean sameMonth = DateUtil.isSameMonth(parse1, parse2);//比较两个日期是否为同一月
        boolean sameTime = DateUtil.isSameTime(parse1, parse2);//是否为相同时间
        DateTime dateTime21 = DateUtil.lastMonth();//上个月
        DateTime dateTime22 = DateUtil.lastWeek();//上周
        int i3 = DateUtil.lengthOfMonth(6, false);//获得指定月份的总天数
        int i4 = DateUtil.lengthOfYear(2022);//获得指定年份的总天数
        int millisecond = DateUtil.millisecond(parse1);//获得指定日期的毫秒数部分
        int minute = DateUtil.minute(parse1);//获得指定日期的分钟数部分
        int month = DateUtil.month(parse1);//获得月份,从0开始计数
        Month month1 = DateUtil.monthEnum(parse1);//获得月份
        DateTime dateTime23 = DateUtil.nextMonth();//下个月
        DateTime dateTime24 = DateUtil.nextWeek();//下周
        String now = DateUtil.now();//当前时间,格式 yyyy-MM-dd HH:mm:ss
        DateTime offset = DateUtil.offset(parse1, DateField.MONTH, 1);//获取指定日期偏移指定时间后的时间,生成的偏移日期不影响原日期
        DateTime dateTime25 = DateUtil.offsetDay(parse1, 1);//偏移天
        DateTime dateTime26 = DateUtil.offsetHour(parse1, 1);//偏移小时
        DateTime dateTime27 = DateUtil.offsetMillisecond(parse1, 1);//偏移毫秒数
        DateTime dateTime28 = DateUtil.offsetMinute(parse1, 1);//偏移分钟
        DateTime dateTime29 = DateUtil.offsetMonth(parse1, 1);//偏移月
        DateTime dateTime30 = DateUtil.offsetSecond(parse1, 1);//偏移秒数
        DateTime dateTime31 = DateUtil.offsetWeek(parse1, 1);//偏移周
        DateTime parse3 = DateUtil.parse("2022-07-28 18:42:20");//将日期字符串转换为DateTime对象,格式:yyyy-MM-dd HH:mm:ss yyyy/MM/dd HH:mm:ss yyyy.MM.dd HH:mm:ss yyyy年MM月dd日 HH时mm分ss秒 yyyy-MM-dd yyyy/MM/dd yyyy.MM.dd HH:mm:ss HH时mm分ss秒 yyyy-MM-dd HH:mm yyyy-MM-dd HH:mm:ss.SSS yyyy-MM-dd HH:mm:ss.SSSSSS yyyyMMddHHmmss yyyyMMddHHmmssSSS yyyyMMdd EEE, dd MMM yyyy HH:mm:ss z EEE MMM dd HH:mm:ss zzz yyyy yyyy-MM-dd'T'HH:mm:ss'Z' yyyy-MM-dd'T'HH:mm:ss.SSS'Z' yyyy-MM-dd'T'HH:mm:ssZ yyyy-MM-dd'T'HH:mm:ss.SSSZ
        DateTime parse4 = DateUtil.parse("2022-07-28 18:42:20", "yyyy-MM-dd");//将特定格式的日期转换为Date对象
        int second = DateUtil.second(parse1);//获得指定日期的秒数部分
        String s7 = DateUtil.secondToTime(3600);//秒数转为时间格式(HH:mm:ss)
        int i5 = DateUtil.timeToSecond("18:48:20");//HH:mm:ss 时间格式字符串转为秒数
        String today = DateUtil.today();//当前日期,格式 yyyy-MM-dd
        int i6 = DateUtil.weekOfMonth(parse1);//获得指定日期是所在月份的第几周
        int i7 = DateUtil.weekOfYear(parse1);//获得指定日期是所在年份的第几周
        int year = DateUtil.year(parse1);//获得年的部分
        DateTime yesterday = DateUtil.yesterday();//昨天


 DateTime parse1 = DateUtil.parse("2022-8-25 02:30:00");
        DateTime parse2 = DateUtil.parse("2023-8-24 14:30:50");
        DateTime dateTime = new DateTime("2022-07-29 08:30:00");
        long between = dateTime.between(DateUtil.date(), DateUnit.MINUTE);//计算相差时长
        int i = dateTime.dayOfMonth();//获得指定日期是这个日期所在月份的第几天,从1开始
        int i1 = dateTime.dayOfWeek();//获得指定日期是星期几,1表示周日,2表示周一
        Week week = dateTime.dayOfWeekEnum();//获得指定日期是星期几
        int i2 = dateTime.dayOfWeekInMonth();//获得天所在的周是这个月的第几周
        int i3 = dateTime.dayOfYear();//获得指定日期是这个日期所在年份的第几天,从1开始
        int field = dateTime.getField(DateField.YEAR);//获得日期的某个部分
        int field1 = dateTime.getField(Calendar.YEAR);//获得日期的某个部分
        Week firstDayOfWeek = dateTime.getFirstDayOfWeek();//获得一周的第一天,默认为周一
        TimeZone timeZone = dateTime.getTimeZone();//获取时区
        ZoneId zoneId = dateTime.getZoneId();//获取时区ID
        int hour = dateTime.hour(true);//获得指定日期的小时数部分
        boolean after = dateTime.isAfter(DateUtil.date());//是否在给定日期之后
        boolean afterOrEquals = dateTime.isAfterOrEquals(DateUtil.date());//是否在给定日期之后或与给定日期相等
        boolean am = dateTime.isAM();//是否为上午
        boolean before = dateTime.isBefore(DateUtil.date());//是否在给定日期之前
        boolean beforeOrEquals = dateTime.isBeforeOrEquals(DateUtil.date());//是否在给定日期之前或与给定日期相等
        boolean in = dateTime.isIn(parse1, parse2);//当前日期是否在日期指定范围内
        boolean leapYear = dateTime.isLeapYear();//是否闰年
        boolean pm = dateTime.isPM();//是否为下午
        boolean weekend = dateTime.isWeekend();//是否为周末,周末指周六或者周日
        int millisecond = dateTime.millisecond();//获得指定日期的毫秒数部分
        int minute = dateTime.minute();//获得指定日期的分钟数部分
        int month = dateTime.month();//获得月份,从0开始计数
        int i4 = dateTime.monthBaseOne();//获取月,从1开始计数
        Month month1 = dateTime.monthEnum();//获得月份
        int i5 = dateTime.monthStartFromOne();//获得月份,从1开始计数
        int quarter = dateTime.quarter();//获得当前日期所属季度,从1开始计数
        Quarter quarter1 = dateTime.quarterEnum();//获得当前日期所属季度
        int second = dateTime.second();//获得指定日期的秒数部分
        String s = dateTime.toDateStr();//转为"yyyy-MM-dd" 格式字符串
        String s1 = dateTime.toString();//转为字符串
        String s2 = dateTime.toString("yyyy-MM-dd");//转为字符串
        String s3 = dateTime.toTimeStr();//转为"HH:mm:ss" 格式字符串
        int i6 = dateTime.weekOfMonth();//获得指定日期是所在月份的第几周
        int i7 = dateTime.weekOfYear();//获得指定日期是所在年份的第几周
        int year = dateTime.year();//获得年的部分


标签:DateUtil,parse1,dd,hutool,DateTime,yyyy,获取,日期,date
From: https://www.cnblogs.com/wjsqqj/p/16707201.html

相关文章