【时间戳格式转换】java常用的时间类转换方法

这篇博客介绍了Java 8中LocalDateTime类的使用,包括如何将其转换为时间戳(秒和毫秒)、从时间戳转换回LocalDateTime,以及字符串日期格式与LocalDateTime之间的转换。此外,还提供了Date和Timestamp与LocalDateTime的互转方法,以及计算指定天数后的时间戳。将这些方法作为工具类可以方便地在系统模块间处理日期格式不一致的问题。
摘要由CSDN通过智能技术生成

问题描述:

java8引入了LocalDateTime类,使关于时间的处理更为方便了。在日常的开发中,与其他后端服务(java、php、python等)、前端服务(js)进行交互的时候,由于时间格式的不统一,使用的时间格式也各种各样,有使用时间戳的(单位为ms或s),有使用字符串的,也有使用Date类的,为了和这些系统进行交互,需要对日期进行一些转换,本文列举一些常见的各种时间格式之间的转换方法。
在使用的时候可以把这些静态方法放在日期处理的util里,供系统的各个module使用。

解决方案:

1,LocalDateTime转换为时间戳(秒)和时间戳(毫秒)

public static Long localDateTimeToMilliseconds(LocalDateTime time) {
    return Timestamp.valueOf(time).getTime();
}
public static Long localDateTimeToSeconds(LocalDateTime time) {
    return localDateTimeToMilliseconds(time) / 1000;
}

2, 时间戳(ms)转换为LocalDateTime

public static LocalDateTime longToLocalDateTime1(Long milliseconds) {
    return new Timestamp(milliseconds).toLocalDateTime();
}
public static LocalDateTime longToLocalDateTime2(Long milliseconds) {
    return LocalDateTime.ofInstant(Instant.ofEpochMilli(milliseconds), ZoneId.systemDefault());
}

3,字符串日期格式转换为LocalDateTime

 
public static LocalDateTime dateTimeStrToLocalDateTime(String dateTimeStr, String pattern)
    throws ParseException {
    SimpleDateFormat format = new SimpleDateFormat(pattern);
    long timestamp = format.parse(dateTimeStr).getTime();
    return longToLocalDateTime1(timestamp);
}

4,LocalDateTime转换为字符串日期格式


public static String localDateTimeToDateTimeStr(LocalDateTime localDateTime, String pattern) {
    SimpleDateFormat format = new SimpleDateFormat(pattern);
    return format.format(localDateTimeToDate(localDateTime));
}

5, Date和LocalDateTime互转

public static LocalDateTime dateToLocalDateTime(Date date) {
    Instant instant = date.toInstant();
    return LocalDateTime.ofInstant(instant, ZoneId.systemDefault());
}
public static Date localDateTimeToDate(LocalDateTime localDateTime) {
    Instant instant = localDateTime.atZone(ZoneId.systemDefault()).toInstant();
    return Date.from(instant);
}

6,Timestamp和LocalDateTime互转


public static LocalDateTime timeStampToLocalDateTime(Timestamp timestamp) {
    return timestamp.toLocalDateTime();
}
public static Timestamp localDateTimeToTimeStamp(LocalDateTime localDateTime) {
    return Timestamp.valueOf(localDateTime);
}

7,获取指定天后的时间戳

 
public static Timestamp getBeginTimeStampBeforeSomeDays(Timestamp timestamp, long days) {
    LocalDateTime localDateTime = timestamp.toLocalDateTime();
    return Timestamp.valueOf(localDateTime.truncatedTo(ChronoUnit.DAYS).minusDays(days));
}
public static Timestamp getEndTimeStampAfterSomeDays(Timestamp timestamp, long days) {
    LocalDateTime localDateTime = timestamp.toLocalDateTime();
    return Timestamp.valueOf(
        localDateTime.truncatedTo(ChronoUnit.DAYS).plusDays(days + 1).minusNanos(1));
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Java 时间戳时间之间的转换可以使用 `java.util.Date` 和 `java.time` 包中的。 1. 将时间戳转换为时间 使用 `java.util.Date` 的构造方法可以将时间戳转换为时间。 ```java long timestamp = 1627597782000L; // 时间戳,单位毫秒 Date date = new Date(timestamp); System.out.println(date); // 输出:Fri Jul 30 10:29:42 CST 2021 ``` 2. 将时间转换为时间戳 可以使用 `java.util.Date` 的 `getTime()` 方法获取时间时间戳值。 ```java Date date = new Date(); long timestamp = date.getTime(); System.out.println(timestamp); // 输出:1627597782000 ``` 3. 使用 java.time 包进行时间戳时间之间的转换 Java 8 引入了 `java.time` 包,提供了一组全新的日期和时间 API。可以使用 `Instant` 时间戳转换为时间,使用 `LocalDateTime` 时间转换为时间戳。 ```java long timestamp = 1627597782000L; // 时间戳,单位毫秒 Instant instant = Instant.ofEpochMilli(timestamp); System.out.println(instant); // 输出:2021-07-30T02:29:42.000Z LocalDateTime datetime = LocalDateTime.now(); long timestamp2 = datetime.atZone(ZoneId.systemDefault()).toInstant().toEpochMilli(); System.out.println(timestamp2); // 输出:1627597782000 ``` 上面代码中,`Instant.ofEpochMilli()` 方法将时间戳转换为 `Instant` 型的时间,`LocalDateTime.now()` 获取当前时间,`atZone()` 方法将当前时间转换为指定时区的时间,`toInstant()` 方法将指定时区的时间转换为 `Instant` 型的时间,`toEpochMilli()` 方法获取 `Instant` 时间时间戳值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

学长代码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值