java日期互转:LocalDateTime、String、TimeStamp、Long、Instant、Date

由于java版本的迭代,一个使用java开发的项目中可能出现多种日期对象,例如LocalDateTime、LocalDate、Date,不像C#只有一个DateTime,因此在各种日期格式或者对象之间的转换显得有点复杂,总是记不住,在需要用到时总是需要依靠搜索引擎,有点浪费时间,所以特意把常用的转换场景总结如下:

1、 LocalDateTime转为String、TimeStamp、Long、Instant、 Date

System.out.println("----------------LocalDateTime----------------");
//LocalDateTime -> String
String localDateTimeToString = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
System.out.println("LocalDateTime -> String:  " + localDateTimeToString);

//LocalDateTime -> TimeStamp
Timestamp localDateTimeToTimeStamp = Timestamp.valueOf(LocalDateTime.now());
System.out.println("LocalDateTime -> TimeStamp:  " + localDateTimeToTimeStamp);

//LocalDateTime -> Long
Long localDateTimeToLong = Timestamp.valueOf(LocalDateTime.now()).getTime();
System.out.println("LocalDateTime -> Long:  " + localDateTimeToLong);

//LocalDateTime -> Instant
Instant localDateTimeToInstant = LocalDateTime.now().atZone(ZoneId.systemDefault()).toInstant();
System.out.println("LocalDateTime -> Instant:  " + localDateTimeToInstant);

//LocalDateTime -> Date
Date LocalDateTimeToDate = Date.from(LocalDateTime.now().atZone(ZoneId.systemDefault()).toInstant());
System.out.println("LocalDateTime -> Date:  " + LocalDateTimeToDate);

2、String转为LocalDateTime、 Date

System.out.println("----------------String----------------");
//String -> LocalDateTime
LocalDateTime stringToLocalDateTime =
        LocalDateTime.parse("2018-03-11 15:30:11", DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
System.out.println("String -> LocalDateTime:  " + stringToLocalDateTime);

//String -> Date
try {
    Date stringToDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse("2018-03-11 15:30:11");
    System.out.println("String -> Date:  " + stringToDate);
} catch (ParseException ex) {
}

3、Timestamp转为LocalDateTime、 Date

System.out.println("---------------Timestamp-----------------");
//Timestamp -> LocalDateTime
LocalDateTime timeStampToLocalDateTime =
        LocalDateTime.ofInstant(new Timestamp(1520754566856L).toInstant(), ZoneId.systemDefault());
System.out.println("Timestamp -> LocalDateTime:  " + timeStampToLocalDateTime);

//Timestamp -> Date
Date timestampToDate = Date.from(new Timestamp(1520754566856L).toInstant());
System.out.println("Timestamp -> Date:  " + timestampToDate);

4、Long转为LocalDateTime、 Date

System.out.println("---------------Long-----------------");
//Long -> LocalDateTime
LocalDateTime longToLocalDateTime =
        LocalDateTime.ofInstant(Instant.ofEpochMilli(1520754566856L), ZoneId.systemDefault());
System.out.println("Long -> LocalDateTime:  " + longToLocalDateTime);

//Long -> Date
Date longToDate = new Date(1520754566856L);
System.out.println("Long -> Date: " + longToDate);

5、Instant转为LocalDateTime、 Date

System.out.println("----------------Instant----------------");
//Instant -> LocalDateTime
LocalDateTime instantToLocalDateTime = LocalDateTime.ofInstant(Instant.now(), ZoneId.systemDefault());
System.out.println("Instant -> LocalDateTime:  " + instantToLocalDateTime);

//Instant -> Date
Date instantToDate = Date.from(Instant.now());
System.out.println("Instant -> Date:  " + instantToDate);

6、Date转为LocalDateTime、String、TimeStamp、Long、Instant

System.out.println("----------------Date----------------");
//Date -> String
String dateToString = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
System.out.println("Date -> String:  " + dateToString);

//Date -> LocalDateTime
LocalDateTime dateToLocalDateTime = LocalDateTime.ofInstant(new Date().toInstant(), ZoneId.systemDefault());
System.out.println("Date -> LocalDateTime:  " + dateToLocalDateTime);

//Date -> Timestamp
Timestamp dateToTimestamp = new Timestamp(new Date().getTime());
System.out.println("Date -> Timestamp:  " + dateToTimestamp);

//Date -> Long
Long dateToLong = new Date().getTime();
System.out.println("Date -> Long: " + dateToLong);

//Date -> Instant
Instant dateToInstant = new Date().toInstant();
System.out.println("Date -> Instant:  " + dateToInstant);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 将 LocalDateTime 换为 Long 可以使用以下方法: 首先,使用 LocalDateTime 的 `toInstant()` 方法将 LocalDateTime 对象换为 Instant 对象,因为 Instant 对象是一个以 Unix 时间(即自1970年1月1日以来的秒数)表示时间的对象。 然后,可以使用 Instant 对象的 `toEpochMilli()` 方法将其换为毫秒数,并将其换为 Long 类型,如下所示: ```java LocalDateTime localDateTime = LocalDateTime.now(); // 获取当前时间 Instant instant = localDateTime.toInstant(); // 将 LocalDateTime 换为 Instant Long timestamp = instant.toEpochMilli(); // 将 Instant 换为毫秒数,并换为 Long 类型 ``` 现在,变量 `timestamp` 中就包含了从 Unix 时间开始的毫秒数,可以将其用作 Long 类型的时间戳。 ### 回答2: LocalDateTimeJava 8中的一个日期时间类,用于表示一个不可变的日期时间对象。而LongJava中的一个基本数据类型,用于表示整数值。 在将 LocalDateTime 换为 Long 类型时,我们可以使用 LocalDateTime 类的 toEpochSecond() 方法来获取从 1970年1月1日开始的秒数,并将其换为 Long 类型。具体步骤如下: 1. 首先,我们需要创建一个 LocalDateTime 对象,可以通过 LocalDateTime.now() 方法获取当前日期时间。 ```java LocalDateTime dateTime = LocalDateTime.now(); ``` 2. 然后,使用 toEpochSecond() 方法将 LocalDateTime 对象换为从 1970年1月1日开始的秒数,并将其赋值给一个 long 类型的变量。 ```java long seconds = dateTime.toEpochSecond(ZoneOffset.UTC); ``` 3. 最后,我们可以将得到的秒数换为 Long 类型,这可以通过将其赋值给一个 Long 类型的变量来完成。 ```java Long longValue = Long.valueOf(seconds); ``` 这样,我们就成功将 LocalDateTime 对象换为 Long 类型。需要注意的是,此换过程仅精确到秒级别,如果需要更高精度的换,可以使用 toInstant() 方法进行换,并使用 Date 类的 getTime() 方法获取毫秒数。 ### 回答3: 要将LocalDateTime换为Long,需要通过将其换为毫秒数来实现。LocalDateTime类表示日期和时间,而Long类是表示整数的基本数据类型。 要将LocalDateTime换为Long,可以使用以下步骤: 1. 首先,将LocalDateTime对象换为特定时区的ZonedDateTime对象。这是为了确保时间换的准确性,因为LocalDateTime没有时区信息。 2. 然后,使用toInstant()方法将ZonedDateTime对象换为Instant对象。Instant类表示从1970年1月1日UTC时间的纪元开始的经过的秒数。 3. 最后,使用toEpochMilli()方法将Instant对象换为毫秒数。这将返回从1970年1月1日零点开始的毫秒数。 示例代码如下: ```java import java.time.LocalDateTime; import java.time.ZoneId; import java.time.ZonedDateTime; public class LocalDateTimeToLongExample { public static void main(String[] args) { // 创建一个LocalDateTime对象 LocalDateTime localDateTime = LocalDateTime.now(); // 将LocalDateTime对象换为ZonedDateTime对象 ZonedDateTime zonedDateTime = localDateTime.atZone(ZoneId.systemDefault()); // 将ZonedDateTime对象换为Instant对象 Instant instant = zonedDateTime.toInstant(); // 将Instant对象换为毫秒数 long milliseconds = instant.toEpochMilli(); // 输出结果 System.out.println("LocalDateTime换为Long的毫秒数为:" + milliseconds); } } ``` 使用这个示例代码,就可以将LocalDateTime对象换为Long型的毫秒数。请注意,换为Long的毫秒数是从1970年1月1日UTC时间的纪元开始的。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值