关于Java中的LocalDateTime,下面就来详细讲解一下。
什么是LocalDateTime?
LocalDateTime是Java 8中引入的新类,是不可变的日期时间对象,用于表示某个特定的日期和时间,不包含与时区相关的信息。
LocalDateTime的具体用法
创建LocalDateTime对象
使用静态工厂方法now()可以获取当前时间的LocalDateTime对象。更加灵活的方式是使用of()方法创建指定日期和时间的LocalDateTime对象。
//获取当前时间的LocalDateTime对象
LocalDateTime now = LocalDateTime.now();
//创建指定日期和时间的LocalDateTime对象
LocalDateTime dateTime = LocalDateTime.of(2021, 10, 1, 9, 0, 0);
格式化输出LocalDateTime对象
使用DateTimeFormatter类可以将LocalDateTime对象格式化输出。DateTimeFormatter是线程安全的,通常情况下使用预定义的常量格式即可,也可以自定义格式。
//使用默认格式输出LocalDateTime对象
String defaultFormat = dateTime.toString();
System.out.println("默认格式:" + defaultFormat);
//使用指定格式输出LocalDateTime对象
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String customFormat = dateTime.format(formatter);
System.out.println("自定义格式:" + customFormat);
输出结果:
默认格式:2021-10-01T09:00
自定义格式:2021-10-01 09:00:00
LocalDateTime的常用方法
LocalDateTime对象提供了一系列方法用于获取或修改其内部表示的日期和时间信息。
- getYear():获取年份的值,如2021。
- getMonth():获取月份的值,如OCTOBER。
- getDayOfMonth():获取月份中的天数,如1。
- getDayOfWeek():获取星期几,如FRIDAY。
- getHour():获取小时数,如9。
- getMinute():获取分钟数,如0。
- getSecond():获取秒数,如0。
- plus():对特定的单位(如年、月、日、小时等)进行加法操作。
- minus():对特定的单位进行减法操作。
//获取年份、月份、天数、小时、分钟、秒、星期几
int year = dateTime.getYear();
Month month = dateTime.getMonth();
int dayOfMonth = dateTime.getDayOfMonth();
int hour = dateTime.getHour();
int minute = dateTime.getMinute();
int second = dateTime.getSecond();
DayOfWeek dayOfWeek = dateTime.getDayOfWeek();
//对年份、月份、天数等进行加法和减法操作
LocalDateTime plusYear = dateTime.plusYears(1);
LocalDateTime minusMonth = dateTime.minusMonths(1);
LocalDateTime和ZonedDateTime的转换
LocalDateTime是不包含时区信息的,而ZonedDateTime则包含时区信息。对于需要涉及时区的场景,需要将LocalDateTime对象转换成ZonedDateTime对象,或者将ZonedDateTime对象转换成LocalDateTime对象。
//将LocalDateTime转换成ZonedDateTime对象
ZoneId zoneId = ZoneId.of("Asia/Shanghai");
ZonedDateTime zonedDateTime = dateTime.atZone(zoneId);
System.out.println("LocalDateTime转换成ZonedDateTime:" + zonedDateTime);
//将ZonedDateTime转换成LocalDateTime对象
LocalDateTime localDateTime = zonedDateTime.toLocalDateTime();
System.out.println("ZonedDateTime转换成LocalDateTime:" + localDateTime);
输出结果:
LocalDateTime转换成ZonedDateTime:2021-10-01T09:00+08:00[Asia/Shanghai]
ZonedDateTime转换成LocalDateTime:2021-10-01T09:00
示例
示例一:计算到生日还有多少天
//生日日期
LocalDateTime birthday = LocalDateTime.of(2000, 10, 1, 0, 0, 0);
//当前日期
LocalDateTime now = LocalDateTime.now();
//计算天数
int days = Period.between(now.toLocalDate(), birthday.toLocalDate()).getDays();
System.out.println("距离生日还有:" + days + "天");
输出结果:
距离生日还有:20天
示例二:计算两个时间之间间隔多少秒
//时间1
LocalDateTime time1 = LocalDateTime.of(2021, 10, 1, 9, 0, 0);
//时间2
LocalDateTime time2 = LocalDateTime.of(2021, 11, 1, 9, 0, 0);
//计算间隔秒数
long seconds = Duration.between(time1, time2).getSeconds();
System.out.println("两个时间之间间隔:" + seconds + "秒");
输出结果:
两个时间之间间隔:2678400秒
以上就是Java中LocalDateTime的具体用法,希望可以帮助到你。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java中LocalDateTime的具体用法 - Python技术站