Java中4种方法将时间戳字符转换为Long

时间戳 通常表示为各种格式的字符串,例如yyyy-MM-dd HH:mm:ss。此外,将这些时间戳字符串转换为长值对于在 Java 中执行日期和时间相关的操作至关重要。

时间戳字符串 2023-11-15 01:02:03,生成的long值将为 1700010123000L,表示自 1970 年 1 月 1 日 00:00:00 GMT 到指定时间的毫秒数现场日期和时间。

1、使用SimplеDateFormat


    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    Date date = sdf.parse(
"2023-11-15 01:02:03");

    String specifiedDateString = sdf.format(date);
    sdf.parse(specifiedDateString).getTime();
  • 使用SimplеDateFormat对象来格式化当前日期时间对象。
  • 特别是,actualTimestamp是通过使用sdf对象解析输入timestampString来导出的,
  • 然后使用getTimе()方法提取其以毫秒为单位的时间。

2、使用Instant
随着 Java 8 中java.time包的引入,处理日期和时间操作的线程安全方法变得可用。Instant类可用于将时间戳字符串转换为长值,如下所示:

Instant instant = LocalDateTime.parse(timestampString, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))
      .atZone(ZoneId.systemDefault()).toInstant();
    instant.toEpochMilli();
  • 代码使用指定的日期时间模式将timestampString解析为LocalDateTime对象。
  • 然后,它使用系统的默认时区将此LocalDateTimе实例转换为Instant 。
  • 使用toEpochMilli()方法从该Instant中提取以毫秒为单位的时间戳。

3、使用LocalDateTime
Java 8 引入了java.time包,提供了一组用于处理日期和时间的综合类。特别是,LocalDatеTimе 类可用于将时间戳字符串转换为长值,如下所示:

LocalDateTime localDateTime = LocalDateTime.parse(timestampString.replace(" ", "T"));
localDateTime.atZone(ZoneId.systemDefault()).toInstant().toEpochMilli();
  • 使用 tZone (ZoneId.systеmDefault())方法将LocalDateTim与timestampString关联起来,从而创建一个ZonedDateTime对象。
  • 接下来,使用toInstant()方法来获取ZonedDateTime的即时表示。
  • 最后,应用toEpochMilli()方法提取以毫秒为单位的时间戳值。

4、使用Joda-Time
Joda-Tim是一个流行的 Java 日期和时间操作库,提供了标准 Java 日期和时间 API 的替代方案,具有更直观的接口。

 

DateTime dateTime = new DateTime(timestampInMillis, DateTimeZone.UTC);
    org.joda.time.LocalDateTime localDateTime = dateTime.toLocalDateTime();

    org.joda.time.format.DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss");
    formatter.print(localDateTime);
  • 我们根据提供的长值实例化DateTime对象。
  • 此外,DateTimeZone.UTC方法将时区显式定义为DateTime对象的协调通用时间 (UTC)。
  • 随后,toLocalDateTimе()函数将DateTime对象无缝转换为LocalDateTime对象,从而保持与时区无关的表示。
  • 最后,我们使用名为formatter的DateTimeFormatter按照指定的模式将LocalDateTime对象转换为字符串。