涉及数据类型
1. long 原生类型:
这是最基本的类型,表示自Unix纪元(1970年1月1日00:00:00 UTC)以来的毫秒数。你可以直接使用 System.currentTimeMillis() 获取当前时间的毫秒级时间戳。
2. java.util.Date 类:
Date 类有一个构造函数接受一个 long 类型的毫秒值作为参数,并可以被用来表示时间戳。此外,Date 对象的 getTime() 方法返回一个 long 类型的时间戳。
3. java.sql.Timestamp 类:
Timestamp 类继承自 java.util.Date 类,但它提供了更高的精度,可以精确到纳秒。这个类在数据库交互中非常常见,因为大多数数据库系统支持 TIMESTAMP 数据类型,与 java.sql.Timestamp 类兼容。
4. java.time.Instant 类(Java 8 及更高版本):
Instant 类代表了时间线上的一个瞬间,它是基于UTC的,并且没有时区的概念。它同样使用自Unix纪元以来的毫秒数来表示时间戳,但也可以提供纳秒级别的精度。使用 Instant.ofEpochMilli(long) 方法可以创建一个 Instant 对象。
5. java.time.LocalDateTime, LocalDate, LocalTime:
这些类并不直接表示时间戳,但它们可以与 Instant 结合使用,或者通过时区转换来表示特定时刻的时间戳。
6. java.time.ZonedDateTime 和 OffsetDateTime:
这些类包含了时区信息,也可以转换为时间戳,通常是通过与 Instant 的相互转换来实现。
时间戳使用
- 获得时间戳:
-
Date date=new Date(); Long timestamp=date.getTime();
- 将时间戳转换为带格式的字符串:
-
//构造方法设置年月日时分秒格式 SimpleDateFormat sdf=new SimpleDateFormat ("yyyy-MM-dd HH:mm:ss"); //把long类型的时间戳转化为构造方法指定的时间字符串 String timeText=sdf.format(timestamp);
- 已经带格式的字符串,转换为时间戳:
-
String time="2020-02-14 13:14:21"; //设置要读取的时间字符串格式 SimpleDateFormat sdf=new SimpleDateFormat ("yyyy-MM-dd HH:mm:ss"); //转换为Date类 Date date=format.parse(time); Long timestamp=date.getTime();