时间戳字符串 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"); |
- 使用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")) |
- 代码使用指定的日期时间模式将timestampString解析为LocalDateTime对象。
- 然后,它使用系统的默认时区将此LocalDateTimе实例转换为Instant 。
- 使用toEpochMilli()方法从该Instant中提取以毫秒为单位的时间戳。
3、使用LocalDateTime
Java 8 引入了java.time包,提供了一组用于处理日期和时间的综合类。特别是,LocalDatеTimе 类可用于将时间戳字符串转换为长值,如下所示:
LocalDateTime localDateTime = LocalDateTime.parse(timestampString.replace(" ", "T")); |
- 使用 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); |
- 我们根据提供的长值实例化DateTime对象。
- 此外,DateTimeZone.UTC方法将时区显式定义为DateTime对象的协调通用时间 (UTC)。
- 随后,toLocalDateTimе()函数将DateTime对象无缝转换为LocalDateTime对象,从而保持与时区无关的表示。
- 最后,我们使用名为formatter的DateTimeFormatter按照指定的模式将LocalDateTime对象转换为字符串。