Date、Calendar(日历对象)、LocalDateTime三大时间日期类的各种处理方式【精选集】

这篇具有很好参考价值的文章主要介绍了Date、Calendar(日历对象)、LocalDateTime三大时间日期类的各种处理方式【精选集】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Date类:

1.1、将字符串型时间日期转化为date类型

        String timeString = "2023-11-17 09:27:00";
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  //创建"简单时间格式化"对象,格式为:yyyy-MM-dd HH:mm:ss
        try {
            Date time = sdf.parse(timeString);  //将字符串(timeString)通过简单时间格式化工具(sdf)解析(parse)为date类型
            System.out.println(time);   //控制台:Fri Nov 17 09:27:00 CST 2023   直接输出Date型数据显示的是CST时间,所以看不太懂
            System.out.println(sdf.format(time));  //控制台:2023-11-17 09:27:00   再将Date数据格式化后输出,就变成yyyy-MM-dd HH:mm:ss格式了
        } catch (ParseException e) {
            throw new RuntimeException(e);
        }

 

1.2、将时间戳转化为date类型

        long sjc = 1700185034000L;  //时间戳,时间的唯一值;尾巴加L是把这个值转换为long类型,因为时间戳的数值范围太大了,不转会异常
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  //创建"简单时间格式化"对象,格式为:yyyy-MM-dd HH:mm:ss
        String time = sdf.format(sjc);  //将时间戳(sjc)通过简单时间格式化工具(sdf)格式化(format)为字符串型时间日期
        System.out.println(time);  //控制台:2023-11-17 09:37:14
        try {
            Date DateTime = sdf.parse(time);  //再将字符串型时间日期(time)通过简单时间格式化工具(sdf)解析(parse)为date类型
            System.out.println(DateTime);  //输出Date数据(显示的是CST时间),控制台:Fri Nov 17 09:37:14 CST 2023
        } catch (ParseException e) {
            throw new RuntimeException(e);
        }

 

1.3、将字符串转化为时间戳

        String timeString = "2023-11-17 09:27:00";  //定义字符串型时间日期
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  //创建"简单时间格式化"对象,格式为:yyyy-MM-dd HH:mm:ss
        try {
            Date timeDate = sdf.parse(timeString);  //字符串型时间日期(timeString)通过简单时间格式化工具(sdf)解析(parse)为date类型
            long sjc = timeDate.getTime();  //将date型时间日期(timeDate)通过getTime()方法转换为时间戳并用long类型接收
            System.out.println(sjc / 1000);  //控制台:1700184420;因为时间戳是精确到毫秒集的,输出时间戳时除以1000是精确到秒集就够了,因为1s(秒)=1000ms(毫秒)
        } catch (ParseException e) {
            throw new RuntimeException(e);
        }

 

1.4、比较两个时间日期(两种方法)

方法1:日期1.before(日期2),判断日期1是否在日期2之前的意思,返回值为boolean;

方法2:日期1.after(日期2),判断日期1是否在日期2之后的意思,返回值为boolean;

        String timeString1 = "2023-11-17 09:27:00";  //定义字符串型时间日期1
        String timeString2 = "2024-11-17 09:27:00";  //定义字符串型时间日期2
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  //创建"简单时间格式化"对象,格式为:yyyy-MM-dd HH:mm:ss
        try {
            Date time1 = sdf.parse(timeString1);  //将字符串型时间日期(timeString1)通过简单时间格式化工具(sdf)解析(parse)为date类型
            Date time2 = sdf.parse(timeString2);  //将字符串型时间日期(timeString2)通过简单时间格式化工具(sdf)解析(parse)为date类型
            boolean before = time1.before(time2);  //指定日期(time1)在参数日期(time2)之前返回true,反之返回false
            boolean after = time1.after(time2);    //指定日期(time1)在参数日期(time2)之后返回true,反之返回false
            System.out.println("日期1:" + timeString1 + "\n日期2:" + timeString2 + "\n日期1在日期2之前:" + before + "\n日期1在日期2之后:" + after);
            /* 控制台:日期1:2023-11-17 09:27:00
                      日期2:2024-11-17 09:27:00
                      日期1在日期2之前:true
                      日期1在日期2之后:false */
        } catch (ParseException e) {
            throw new RuntimeException(e);
        }

 

 

Calendar(日历对象)类:

2.1、为日历对象定义一个指定日期的数据

        Calendar calendar = Calendar.getInstance();  //获取一个日历对象(calendar)
        calendar.set(Calendar.YEAR, 2023);  //给日历对象的年份赋值
        calendar.set(Calendar.MONTH, 11-1);  //给日历对象的月份赋值; 注:月份赋值时要减1,具体原因当时我也不是很清楚,可能是下标吧(例如月份给定11月,那么值就应填10)
        calendar.set(Calendar.DAY_OF_MONTH, 17);  //给日历对象的号数赋值
        //注:未赋值的单位(例如:时,分,秒)默认为当前时间;也可使用set()方法一次性给定所有值(年-月-日 时:分:秒):calendar.set(2023,11,17,9,30,0);
 
        //将日历对象(calendar)通过getTime()方法转换为Date类型并输出,Date类型输出的是CST时间
        System.out.println(calendar.getTime());  //控制台:Fri Nov 17 22:16:41 CST 2023
 
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  //创建"简单时间格式"化对象,格式为:yyyy-MM-dd HH:mm:ss
 
        //将Date型数据(calendar.getTime())通过简单时间格式化工具(sdf)格式化(format)为字符串后输出
        System.out.println(sdf.format(calendar.getTime()));  //控制台:2023-11-17 22:16:41

 

2.2、为日历对象添加或减去年、月、日、周

        Calendar calendar = Calendar.getInstance();  //获取一个日历对象(calendar)
 
        //使用set()方法一次性给定所有值(年-月-日 时:分:秒)  注:月份给定值时要减1,具体原因当时我也不是很清楚,可能是下标吧(例如月份给定11月,那么值就应填10)
        calendar.set(2023,11-1,17,9,30,0);
 
        calendar.add(Calendar.YEAR, 1);  //给日历对象增加1年的时间;减就给参数传负数
        calendar.add(Calendar.MONTH,1);  //给日历对象增加1月的时间;减就给参数传负数
        calendar.add(Calendar.DAY_OF_MONTH, 1);  //给日历对象增加1天的时间;减就给参数传负数
        calendar.add(Calendar.WEEK_OF_MONTH, 1);  //给日历对象增加1周的时间;减就给参数传负数
 
        //将日历对象(calendar)通过getTime()方法转换为Date类型并输出,Date类型输出的是CST时间
        System.out.println(calendar.getTime());  //控制台:Wed Dec 25 09:30:00 CST 2024
        
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  //创建"简单时间格式化"对象,格式为:yyyy-MM-dd HH:mm:ss
 
        //将Date型数据(calendar.getTime())通过简单时间格式化工具(sdf)格式化(format)为字符串后输出
        System.out.println(sdf.format(calendar.getTime()));  //控制台:2024-12-25 09:30:00

 

2.3、获取日历对象的年、月、日、时、分、秒、周

        Calendar calendar = Calendar.getInstance();  //获取一个日历对象(calendar)
 
        //使用set()方法一次性给定所有值(年-月-日 时:分:秒)  注:月份给定值时要减1,具体原因当时我也不是很清楚,可能是下标吧(例如月份给定11月,那么值就应填10)
        calendar.set(2023,11-1,17,9,30,0);
 
        int year = calendar.get(Calendar.YEAR);         //获取年份
        int month = calendar.get(Calendar.MONTH);       //获取月份
        int day = calendar.get(Calendar.DAY_OF_MONTH);  //获取当天是本月当中的第几天(获取号数)
        int hour = calendar.get(Calendar.HOUR);         //获取时
        int minute = calendar.get(Calendar.MINUTE) ;    //获取分
        int second = calendar.get(Calendar.SECOND);     //获取秒
        int week = calendar.get(Calendar.WEEK_OF_YEAR); //获取当前是今年的第几周
        
        System.out.println("年份:" + year + "\n月份:" + month + "\n号数:" + day + "\n时:" + hour + "\n分:" + minute + "\n秒:" + second + "\n本周是今年的第" + week + "周");

控制台:

Date、Calendar(日历对象)、LocalDateTime三大时间日期类的各种处理方式【精选集】

 

2.4、将日历对象转化为时间戳(两种方法)、获取当前时间的时区

        Calendar calendar = Calendar.getInstance();  //获取一个日历对象(calendar)
 
        //使用set()方法一次性给定所有值(年-月-日 时:分:秒)  注:月份给定值时要减1,具体原因当时我也不是很清楚,可能是下标吧(例如月份给定11月,那么值就应填10)
        calendar.set(2023,11-1,17,9,30,0);
        
        //方法一(通过getTimeInMillis()方法获取):
        long timeInMillis = calendar.getTimeInMillis() / 1000;  //因为时间戳是精确到毫秒集的,得到时间戳时除以1000是精确到秒集就够了,因为1s(秒)=1000ms(毫秒)
        System.out.println("Calendar类的getTimeInMillis()方法获取的时间戳:"+timeInMillis);
        
        //方法二(先将日历对象转换为Date数据,再调用Date类的方法获取时间戳):
        Date date = calendar.getTime();  //将日历对象(calendar)通过Calendar类的getTime()方法转换为Date数据
        long timeInMillisDate = date.getTime() / 1000;  //调用Date类的getTime()方法获取时间戳,因为时间戳是精确到毫秒集的,得到时间戳时除以1000是精确到秒集就够了,因为1s(秒)=1000ms(毫秒)
        System.out.println("Date类的getTime()方法获取的时间戳:" + timeInMillisDate);
        //注:方法二可以简化为long timeInMillisDate = calendar.getTime().getTime() / 1000;   第一个getTime()是转Date类型数据,第二个是转时间戳,/1000是毫秒集转秒集
        
        //获取当前时间的时区
        TimeZone timeZone = calendar.getTimeZone();
        System.out.println("当前时间的时区:" + timeZone);

控制台:

Date、Calendar(日历对象)、LocalDateTime三大时间日期类的各种处理方式【精选集】

 

2.5、比较两个时间日期(两种方法)

方法1:日期1.before(日期2),判断日期1是否在日期2之前的意思,返回值为boolean;

方法2:日期1.after(日期2),判断日期1是否在日期2之后的意思,返回值为boolean;

        Calendar calendar1 = Calendar.getInstance();  //获取日历对象1(calendar1)
        calendar1.set(2023,11-1,17,9,30,0);  //使用set()方法一次性给定所有值(年-月-日 时:分:秒)  注:月份给定值时要减1,具体原因当时我也不是很清楚,可能是下标吧(例如月份给定11月,那么值就应填10)
        
        Calendar calendar2 = Calendar.getInstance();  //获取日历对象2(calendar2)
        calendar2.set(2024,11-1,17,9,30,0);  //使用set()方法一次性给定所有值(年-月-日 时:分:秒)  注:月份给定值时要减1,具体原因当时我也不是很清楚,可能是下标吧(例如月份给定11月,那么值就应填10)
        
        boolean before = calendar1.before(calendar2);  //指定日期(calendar1)在参数日期(calendar2)之前返回true,反之返回false
        boolean after = calendar1.after(calendar2);    //指定日期(calendar1)在参数日期(calendar2)之后返回true,反之返回false
        
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  //创建"简单时间格式化"对象,为了下面将Date数据转字符串输出更好的看懂
        
        String time1 = sdf.format(calendar1.getTime());  //先将日历对象(calendar1)通过getTime()方法转换为Date类型数据,然后将Date数据格式化(format)后用String类型接收
        String time2 = sdf.format(calendar2.getTime());  //先将日历对象(calendar2)通过getTime()方法转换为Date类型数据,然后将Date数据格式化(format)后用String类型接收
        
        System.out.println("日期1:" + time1 + "\n日期2:" + time2 + "\n日期1在日期2之前:" + before + "\n日期1在日期2之后:" + after);

控制台:

Date、Calendar(日历对象)、LocalDateTime三大时间日期类的各种处理方式【精选集】

 

 

LocalDateTime类:

3.1、获取当前时间的三种形式

        LocalDate localDate = LocalDate.now();  //第一种(LocalDate)格式为:yyyy-MM-dd
        System.out.println(localDate);  //控制台:2023-11-18
 
        LocalTime localTime = LocalTime.now();  //第二种(LocalTime)格式为:HH-mm-ss
        System.out.println(localTime);  //控制台:23:02:13.573164400
 
        LocalDateTime localDateTime = LocalDateTime.now();  //第三种(LocalDateTime)格式为:yyyy-MM-ddTHH-mm-ss
        System.out.println(localDateTime);  //控制台:2023-11-18T23:02:13.574161700

 

3.2、根据指定日期/时间创建对象的三种形式

        LocalDate localDate = LocalDate.of(2023,11,17);  //第一种(LocalDate)格式为:yyyy-MM-dd
        System.out.println(localDate);  //控制台:2023-11-17
 
        LocalTime localTime = LocalTime.of(15,30,10);  //第二种(LocalTime)格式为:HH-mm-ss
        System.out.println(localTime);  //控制台:15:30:10
 
        LocalDateTime localDateTime = LocalDateTime.of(2023,11,17,15,30,10);  //第三种(LocalDateTime)格式为:yyyy-MM-ddTHH-mm-ss
        System.out.println(localDateTime);  //控制台:2023-11-17T15:30:10

 

3.3、日期时间的加减(两种方式)

对于LocalDate,只有精度大于或等于日的加减,如年、月、日;

对于LocalTime,只有精度小于或等于时的加减,如时、分、秒、纳秒;

对于LocalDateTime,则可以进行任意精度的时间相加减;

        //方式一:
        System.out.println("——————————方式1——————————");
        LocalDateTime localDateTime = LocalDateTime.now();  //获取当前时间
        LocalDateTime plusYearResult = localDateTime.plusYears(1);      //增加1年;减就给参数传负数
        LocalDateTime plusMonthResult = localDateTime.plusMonths(1);    //增加1月;减就给参数传负数
        LocalDateTime plusDayResult = localDateTime.plusDays(1);        //增加1天;减就给参数传负数
        LocalDateTime plusHoursResult = localDateTime.plusHours(1);     //增加1小时;减就给参数传负数
        LocalDateTime plusMinutesResult = localDateTime.plusMinutes(1); //增加1分钟;减就给参数传负数
        LocalDateTime plusSecondResult = localDateTime.plusSeconds(1);  //增加1秒;减就给参数传负数
        System.out.println("当前时间:" + localDateTime + "\n增加1年后的时间:" + plusYearResult +
                "\n增加1月后的时间:" + plusMonthResult + "\n增加1天后的时间:" + plusDayResult +
                "\n增加1小时后的时间:" + plusHoursResult + "\n增加1分钟后的时间:" + plusMinutesResult +
                "\n增加1秒后的时间:" + plusSecondResult);
        
        //方式二:
        System.out.println("\n\n——————————方式2——————————");
        LocalDateTime plusYearResult2 = localDateTime.plus(1, ChronoUnit.YEARS);      //增加1年;减就给参数传负数
        LocalDateTime plusMonthResult2 = localDateTime.plus(1, ChronoUnit.MONTHS);    //增加1月;减就给参数传负数
        LocalDateTime plusDayResult2 = localDateTime.plus(1, ChronoUnit.DAYS);        //增加1天;减就给参数传负数
        LocalDateTime plusHoursResult2 = localDateTime.plus(1, ChronoUnit.HOURS);     //增加1小时;减就给参数传负数
        LocalDateTime plusMinutesResult2 = localDateTime.plus(1, ChronoUnit.MINUTES); //增加1分钟;减就给参数传负数
        LocalDateTime plusSecondResult2 = localDateTime.plus(1, ChronoUnit.SECONDS);  //增加1秒;减就给参数传负数
        System.out.println("当前时间:" + localDateTime + "\n增加1年后的时间:" + plusYearResult2 +
                "\n增加1月后的时间:" + plusMonthResult2 + "\n增加1天后的时间:" + plusDayResult2 +
                "\n增加1小时后的时间:" + plusHoursResult2 + "\n增加1分钟后的时间:" + plusMinutesResult2 +
                "\n增加1秒后的时间:" + plusSecondResult2);

控制台:

Date、Calendar(日历对象)、LocalDateTime三大时间日期类的各种处理方式【精选集】

 

3.4、将年、月、日等修改为指定的值,并返回新的日期(时间)对象

其效果与时间日期相加减差不多,如今天是2018-01-13,要想变为2018-01-20有两种方式:

a: localDate.plusDays(7) -> 相加指定的天数

b: localDate.withDayOfYear(20) -> 直接指定到那一天

        LocalDate LocalDate = java.time.LocalDate.now();  //获取当前时间
        LocalDate withDayOfYearResult = LocalDate.withDayOfYear(60);  //在当前时间的基础上,指定到本年当中的第60天,取值范围1-365,366
        LocalDate withDayOfMonthResult = LocalDate.withDayOfMonth(25);//在当前时间的基础上,指定到本月当中的第25天,取值范围1-29,30,31
        LocalDate withYearResult = LocalDate.withYear(2018);     //在当前时间的基础上,直接指定到2018年
        LocalDate withMonthResult = LocalDate.withMonth(12);      //在当前时间的基础上,直接指定到12月,取值范围1-12
        System.out.println("当前时间:" + LocalDate + "\n指定到本年当中的第60天:" + withDayOfYearResult +
                "\n指定到本月当中的第25天:" + withDayOfMonthResult + "\n直接指定年份为2018:" + withYearResult +
                "\n直接指定月份为12月:" + withMonthResult);

控制台:

Date、Calendar(日历对象)、LocalDateTime三大时间日期类的各种处理方式【精选集】

 

3.5、获取日期的年、月、日、时、分、秒、周

        LocalDateTime localDateTime = LocalDateTime.now();  //获取当前时间
        int dayOfYear = localDateTime.getDayOfYear();  //获取今天是本年当中的第几天
        int dayOfMonth = localDateTime.getDayOfMonth();  //获取今天是本月当中的第几天
        DayOfWeek dayOfWeek = localDateTime.getDayOfWeek();  //获取今天是本周当中的星期几,返回值为英文单词,例如星期一(Monday);若要输出数字,可以继续.getValue()方法获取
        System.out.println("当前时间:" + localDateTime + "\n今天是本年当中的第" + dayOfYear + "天,本月中的第" + dayOfMonth +
                "天,星期" + dayOfWeek.getValue() + ",今天是" + dayOfWeek);
        
        int year = localDateTime.getYear();  //获取年份
        Month month = localDateTime.getMonth();  //获取当前月份是本年当中的第几月,返回值为英文单词,例如一月(January);若要输出数字,可以继续.getValue()方法获取
        int day = localDateTime.getDayOfMonth();  //获取今天是本月当中的第几天(获取号数)
        int hour = localDateTime.getHour();  //获取时
        int minute = localDateTime.getMinute();  //获取分
        int second = localDateTime.getSecond();  //获取秒
        System.out.println("年:" + year + "\n月:" + month.getValue() + ",本月是" + month + "\n日:" + day + "\n时:" + hour + "\n分:" + minute +
                "\n秒:" + second);

控制台:

Date、Calendar(日历对象)、LocalDateTime三大时间日期类的各种处理方式【精选集】

 

3.6、比较两个时间日期(两种方法)

方法1:日期1.before(日期2),判断日期1是否在日期2之前的意思,返回值为boolean;

方法2:日期1.after(日期2),判断日期1是否在日期2之后的意思,返回值为boolean;

        LocalDate time1 = LocalDate.of(2023, 11, 17);  //获取指定日期1(time1)
        LocalDate time2 = LocalDate.of(2024, 11, 17);  //获取指定日期2(time2)
        boolean before = time1.isBefore(time2);  //指定日期(time1)在参数日期(time2)之前返回true,反之返回false
        boolean after = time1.isAfter(time2);   //指定日期(time1)在参数日期(time2)之后返回true,反之返回false
        System.out.println("日期1:" + time1 + "\n日期2:" + time2 +
                "\n日期1在日期2之前:" + before + "\n日期1在日期2之后:" + after);

控制台:

Date、Calendar(日历对象)、LocalDateTime三大时间日期类的各种处理方式【精选集】

 

3.7、计算时间、日期间隔

        //计算两个日期的间隔————年月日:
        LocalDate time1 = LocalDate.of(2023, 11, 17);  //获取指定日期1(time1)
        LocalDate time2 = LocalDate.of(2024, 12, 18);  //获取指定日期2(time2)
        Period period = Period.between(time1,time2);  //创建时期Period类并调用间隔范围between()方法,内部结构是后减前(time2-time1)
        System.out.println("日期1:" + time1 + "\n日期2:" + time2 + "\n相差年数:" + period.getYears() + "\n相差月数:" + period.getMonths() + "\n相差日数:" + period.getDays());
        //还可以这样获取相差的年月日
        System.out.println("————————————————");
        int year = (int) period.get(ChronoUnit.YEARS);  //获取间隔中的年份
        int month = (int) period.get(ChronoUnit.MONTHS);  //获取间隔中的月份
        int day = (int) period.get(ChronoUnit.DAYS);  //获取间隔中的天数
        System.out.println("日期1:" + time1 + "\n日期2:" + time2 + "\n相差年数:" + year + "\n相差月数:" + month + "\n相差日数:" + day);
        //注意:当获取两个日期的间隔时,并不是单纯的年月日对应的数字相加减,而是会先算出具体差多少天,在折算成相差几年几月几日的
        
        //计算两个时间的间隔————天时分秒:
        LocalDateTime date1 = LocalDateTime.of(2023, 11, 17, 20, 30, 10);  //获取指定日期1(date1)
        LocalDateTime date2 = LocalDateTime.of(2023, 11, 20, 23, 40, 30);  //获取指定日期2(date2)
        Duration duration = Duration.between(date1, date2);  //创建时间Duration类并调用间隔范围between()方法,内部结构是后减前(date2-date1)
        System.out.println(date1 + " 与 " + date2 + " 各项单位间隔如下:  " + "\n"
                + "天:" + duration.toDays() + "\n"
                + "时:" + duration.toHours() + "\n"
                + "分:" + duration.toMinutes() + "\n"
                + "毫秒:" + duration.toMillis() + "\n"
                + "纳秒:" + duration.toNanos() + "\n"
        );
        //注意:并没有获得秒差的,但既然可以获得毫秒,秒就可以自行获取了:1s(秒)=1000ms(毫秒) 可以拿毫秒差除以1000得到秒差

控制台:

Date、Calendar(日历对象)、LocalDateTime三大时间日期类的各种处理方式【精选集】

 

3.8、当计算程序的运行时间时,应当使用时间戳Instant

        Instant instant1 = Instant.now();  //记录程序开始的时间
        for (int i = 0; i < 1000000000; i++) {
            //循环10亿次
        }
        Instant instant2 = Instant.now();  //记录程序结束的时间
        Duration duration = Duration.between(instant1, instant2);  //创建时间Duration类并调用间隔范围between()方法,内部结构是后减前(instant2-instant1)
        System.out.println("程序运行耗时为:" + duration.toNanos() + "纳秒");  //本次的控制台结果:程序运行耗时为:3989300纳秒

 

3.9、使用自定义时间日期格式

注:自定义转化的格式一定要与日期类型对应

1、LocalDate类型数据只能设置仅含年月日的格式

2、LocalTime类型数据只能设置仅含时分秒的格式

3、LocalDateTime类型数据可以设置含年月日时分秒的格式

        LocalDateTime localDateTime = LocalDateTime.now();  //获取当前时间
        DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH:mm:ss");  //创建"时间格式器(DateTimeFormatter)"对象,格式为:yyyy年MM月dd日 HH:mm:ss
        String timeString = dtf.format(localDateTime);  //时间日期(localDateTime)格式化(format)后用String类型接收
        System.out.println(timeString);  //控制台:2023年11月18日 23:19:55

 

4.0、将字符串形式的时间日期转化为日期对象

        String timeString = "2023-11-17 20:30:30";  //定义时间日期字符串
        DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");  //创建"时间格式器(DateTimeFormatter)"对象,格式为:yyyy年MM月dd日 HH:mm:ss
        LocalDateTime dateTime = LocalDateTime.parse(timeString, dtf);  //将字符串型时间日期(timeString)通过时间格式器(dtf)解析(parse)为LocalDateTime类型
        System.out.println(dateTime);  //控制台:2023-11-17T20:30:30

注:格式的写法必须与字符串的形式一样,否则会报运行时异常,例如:

2023-11-17 20:30:30 对应 yyyy-MM-dd HH:mm:ss

20231117203030 对应 yyyyMMddHHmmss

但要记住:得到的最终结果都是类似2023-11-17T20:30:30的格式,因为在输出LocalDateTime对象时,会调用其重写的toString方法:
Date、Calendar(日历对象)、LocalDateTime三大时间日期类的各种处理方式【精选集】

 

4.1将时间日期对象转为格式化后的时间日期对象

        LocalDateTime dateTime = LocalDateTime.now();  //获取当前时间,格式:yyyy-MM-dd HH:mm:ss
        DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd");  //创建"时间格式器(DateTimeFormatter)"对象,格式为:yyyy-MM-dd
        String timeString =  dtf.format(dateTime);  //将时间日期对象(dateTime)通过时间格式器(dtf)格式化(format)为String类型后接收
        LocalDate time = LocalDate.parse(timeString, dtf);  //将字符串型时间日期(timeString)通过时间格式器(dtf)解析(parse)为LocalDate类型,格式为:yyyy-MM-dd
        System.out.println(time);  //控制台:2023-11-18

 

4.2、long毫秒值(时间戳)转换为日期

        DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH-mm-ss");
        String longDateTime = dtf.format(LocalDateTime.ofInstant(Instant.ofEpochMilli(System.currentTimeMillis()), ZoneId.of("Asia/Shanghai")));
        System.out.println(longDateTime);  //控制台:2023-11-18 23-25-08

看完点赞~人美心善!文章来源地址https://www.toymoban.com/news/detail-746872.html

到了这里,关于Date、Calendar(日历对象)、LocalDateTime三大时间日期类的各种处理方式【精选集】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 微信小程序使用vant calendar日历组件 default-date 默认选中的日期无效?

    废话少说 直接贴代码 总结:  ①: 要有一个minDate 最小可选日期,要不然无法选择之前的时间 ②: defaultDate(数组): 绑定为时间戳,,[ 起始时间,截止时间 ] , 转换时间戳时要再次getTime()否则设定默认时间失败!!!重点!!!

    2024年02月02日
    浏览(62)
  • StringBuilder类- StringBuffer类- 正则表达式- Date类 (日期)- SimpleDateFormat类(日期格式化的类)- Calendar类 (日历类)

    目录 stringbuilder类 StringBuffer类 正则表达式 日期 日期格式化的类 Calendar类:(日历类) 是一个抽象类 stringbuilder类 概念:可以改变的字符串 (这里跟string可以区分开,string创建的是不可改变的字符串) 底层:使用的是一个byte类型的数组,默认长度16 (string的底层使用final修

    2024年01月17日
    浏览(47)
  • 日期与时间【Date/SimpleDateFormat/Calendar】

    视频链接:https://www.bilibili.com/video/BV1Cv411372m?p=121vd_source=9140dcc493e34a9f4e95ca2f8f71bbd3 Date类的对象在java中代表的是当前所在系统的此刻日期时间。 Date的构造器 public Date():创建一个Date对象,代表的是系统当前此刻日期时间。 Date的常用方法 public long getTime():获取时间对象的毫秒值

    2024年02月03日
    浏览(45)
  • Java中的日期时间类详解(Date、Calendar、DateFormat)

    Hi i,m JinXiang ⭐ 前言 ⭐ 本篇文章主要介绍Java时间的几种常见方法以及部分理论知识 🍉欢迎点赞 👍 收藏 ⭐留言评论 📝私信必回哟😁 🍉博主收将持续更新学习记录获,友友们有任何问题可以在评论区留言 在JDK1.0中,Date类是唯一的一个代表时间的类,但是由于Date类不

    2024年02月05日
    浏览(38)
  • Linux :: 时间日历指令【2】:date 指令 与 时间戳(及日期与时间戳的相互转换)

    前言:本篇是 Linux 基本操作篇章的内容! 笔者使用的环境是基于腾讯云服务器:CentOS 7.6 64bit。 学习集: C++ 入门到入土!!!学习合集 Linux 从命令到网络再到内核!学习合集 目录索引: 1. 时间戳的认识 2. Linux 下获取时间戳方式:date +%s 3. 时间 = 时间戳 4. 时间戳 = 时间:

    2024年02月15日
    浏览(47)
  • JavaScript Date对象 、日期求差案例 、 购物秒杀倒计时、日历

    一、创建Date对象 var dateObj=new Date(); var now = Date.now()   当前时间 二、Date方法 1、将日期转为字符串 2、获取年、月、日、小时、分、秒 getFullYear() getMonth()      获取月份,返回值为0-11(外国人规定的),表示1月到12月,所以获取到月份之后需要+1 getDate()        获取天,返

    2024年02月05日
    浏览(56)
  • Java String、Date、Calendar、LocalDate和LocalDateTime互转

    目录 一、String和Date互转 1.1 String时间转为Date 1.2 Date转为String 二、String和Calendar互转 2.1 String时间转为Calendar 2.2 Calendar转为String 三、String和LocalDate(LocalDateTime)互转 3.1 String时间转为LocalDate(LocalDateTime) 3.2 LocalDate(LocalDateTime)转为String 四、Date和Calendar互转 4.1 Date转为Calen

    2024年02月06日
    浏览(48)
  • Vant 的 Calendar 日历组件 自定义日期区间minDate、maxDate

          1.默认日历时间范围是当前时间到往后的6个月,可通过 min-date 和 max-date 自定义日历的范围。       2.设置 type 为 range 后可以选择日期区间,confirm 事件返回的 date 为数组结构,数组第一项为开始时间,第二项为结束时间。       3.可设置allow-same-day 允许选择同一天。

    2024年02月15日
    浏览(53)
  • Java 常见的日期转换(Timestamp、Calendar、Date、String)

    日期类型: Timestamp: java.sql.Timestamp Calendar: java.util.Calendar Date: java.util.Date String: java.lang.String 1、Timestamp 转 Calendar 2、Timestamp 转 Date 3、Timestamp 转 String 4、Calendar 转 Timestamp 5、Calendar 转 Date 6、Calendar 转 String 7、Date 转 Calendar 8、Date 转 Timestamp

    2024年02月04日
    浏览(49)
  • Flutter之日期选择器 calendar_date_picker2

    calendar_date_picker2主要由两个小部件组成: 1、 CalendarDatePicker2 ,此小部件仅包含日历 UI,并且每当用户点击不同的日期时就会发出事件。 2、 CalendarDatePicker2WithActionButtons ,此小部件包括日历 UI 和操作按钮(取消和确定)。仅当用户点击“确定”按钮时,此小部件才会发出更新

    2024年02月07日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包