LocalDateTime类和时间差

 1、特征

LocalDateTime类的关键特征:

        1、LocalDateTime是java.time包中的一个不可变类(immutable class)。
        2、内部实现使用了LocalDate和LocalTime。
        3、不包含时区信息,是一个本地日期和时间的组合。
最主要的特性如下:

        1、不可变性(Immutability): LocalDateTime是不可变的,这意味着一旦创建了对象,就无法更改其内容。任何对日期和时间的修改都会返回一个新的LocalDateTime对象。

        2、线程安全性: 由于不可变性,LocalDateTime是线程安全的。多个线程可以同时访问对象而无需担心并发问题。

        3、工厂方法: 除了使用of方法创建LocalDateTime对象外,还有一些静态工厂方法,如now、ofInstant、ofEpochSecond等,用于根据不同的情况创建实例。

        4、日期时间调整: LocalDateTime提供了plus、minus等方法,用于执行日期和时间的调整操作。这些方法返回新的对象,而不是修改原始对象。

        5、格式化和解析: LocalDateTime支持DateTimeFormatter用于格式化和解析日期时间。你可以创建自定义的格式化模式。

2.、常用方法 

获取当前日期时间:
LocalDateTime currentDateTime = LocalDateTime.now();

创建指定日期时间:
LocalDateTime specificDateTime = LocalDateTime.of(2022, Month.JANUARY, 1, 12, 30);

获取日期和时间部分:
LocalDate datePart = specificDateTime.toLocalDate();
LocalTime timePart = specificDateTime.toLocalTime();


日期时间加减操作:
LocalDateTime newDateTime = specificDateTime.plusDays(1).minusHours(3);

比较:
boolean isAfter = specificDateTime.isAfter(currentDateTime);

格式化和解析(将字符串转换为formattedDateTime ):
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String formattedDateTime = specificDateTime.format(formatter);

LocalDateTime parsedDateTime = LocalDateTime.parse("2022-01-01 12:30:00", formatter);

// 设置自动确定考勤时间为今天晚上的23点59分59秒
LocalDateTime now = LocalDateTime.now().with(LocalTime.MAX);
// 转换成字符串
String formattedDateTime = now.format(formatter);

 时间比较:比较时间差,计算分钟进行转换,直接获取小时会丢失分钟

 // 备注时间(小时)
nteger h = Integer.valueOf(startTimeData.substring(0,2));
// 备注时间(分钟)
Integer m = Integer.valueOf(startTimeData.substring(3));
// 开始时间(早上9点)
LocalTime startTime = LocalTime.of(h, m); // 开始时间
// 结束时间
LocalTime LetStartTime = LocalTime.of(17,30); // 结束时间:下午17点30
// 计算相差时间
// Duration duration = Duration.between(startTime, LetStartTime);
// long hour = duration.toHours(); // 获取小时数
long minutes = ChronoUnit.MINUTES.between(startTime, LetStartTime); 
// 计算分钟数差
double hour = (double) minutes / 60; // 将分钟数转换为小时数,包括小数部分

  • 8
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
问题:localdatetime 两个时间差 解答过程: 首先,我们需要了解Java中的Date和LocalDateTime型。Date是一个表示日期和时间的,它通常用于处理旧版本的Java库中的日期和时间。LocalDateTimeJava 8引入的一个新,它表示一个不带时区的日期和时间。 在这个问题中,我们需要比较两个不同型的日期和时间:Date和LocalDateTime。为了进行比较,我们需要将它们转换为相同的型。我们可以通过以下步骤来实现这一点: 1. 将Date转换为LocalDateTime:我们可以使用Date对象的toInstant()方法将其转换为Instant对象,然后使用Instant对象的atZone()方法将其转换为ZonedDateTime对象。最后,我们可以使用ZonedDateTime对象的toLocalDateTime()方法将其转换为LocalDateTime对象。 2. 将LocalDateTime转换为Date:我们可以使用LocalDateTime对象的atZone()方法将其转换为ZonedDateTime对象,然后使用ZonedDateTime对象的toInstant()方法将其转换为Instant对象。最后,我们可以使用Instant对象的toLocalDateTime()方法将其转换回LocalDateTime对象。 现在我们可以比较这两个日期和时间了。以下是一个示例代码: ```java import java.time.*; public class DateAndLocalDateTimeComparison { public static void main(String[] args) { // 创建一个Date对象 Date date = new Date(); System.out.println("Date: " + date); // 将Date对象转换为LocalDateTime对象 LocalDateTime localDateTime = dateToLocalDateTime(date); System.out.println("LocalDateTime: " + localDateTime); // 创建一个新的Date对象 Date newDate = new Date(); System.out.println("New Date: " + newDate); // 将新的Date对象转换为LocalDateTime对象 LocalDateTime newLocalDateTime = newDateToLocalDateTime(newDate); System.out.println("New LocalDateTime: " + newLocalDateTime); } // 将Date对象转换为LocalDateTime对象的方法 public static LocalDateTime dateToLocalDateTime(Date date) { return date.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime(); } // 将新的Date对象转换为LocalDateTime对象的方法 public static LocalDateTime newDateToLocalDateTime(Date date) { return date.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime(); } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值