1. Instant.now().toEpochMilli()(Java 8及以上)
  • 背景信息
  • 在Java 8中引入了新的日期和时间API(java.time包),Instant类用于表示时间轴上的一个瞬时点。它提供了一种更现代化的方式来处理日期和时间,相比于旧的Date类和相关方法更加灵活和易于理解。
  • 详细解释
  • Instant.now()方法获取当前的时间点,这个时间点是基于UTC(协调世界时)的。然后通过toEpochMilli()方法将这个Instant对象转换为从1970年1月1日00:00:00 UTC开始到当前时间所经过的毫秒数,这和System.currentTimeMillis()的功能是类似的。
  • 示例代码如下:
import java.time.Instant;
public class Main {
    public static void main(String[] args) {
        long millis = Instant.now().toEpochMilli();
        System.out.println(millis);
    }
}
  1. Calendar.getInstance().getTimeInMillis()(Java早期版本)
  • 背景信息
  • Calendar类是Java早期用于处理日期和时间的工具类。它提供了丰富的方法来获取和设置日期时间的各个字段,如年、月、日、时、分、秒等。
  • 详细解释
  • Calendar.getInstance()方法获取一个Calendar对象,这个对象默认使用系统的时区和语言环境设置。然后通过getTimeInMillis()方法获取从1970年1月1日00:00:00 UTC开始到这个Calendar对象所表示的时间所经过的毫秒数。不过,与System.currentTimeMillis()相比,使用Calendar来获取当前时间的毫秒数稍微复杂一些,因为Calendar主要用于日期和时间的复杂操作,而获取毫秒数只是它的一个功能。
  • 示例代码如下:
import java.util.Calendar;
public class Main {
    public static void main(String[] args) {
        long millis = Calendar.getInstance().getTimeInMillis();
        System.out.println(millis);
    }
}
  1. new Date().getTime()(Java早期版本)
  • 背景信息
  • Date类是Java早期版本中用于处理日期和时间的类。它表示特定的瞬间,精确到毫秒。
  • 详细解释
  • 当创建一个Date对象时,如果没有传入参数,它会默认表示当前日期和时间。然后通过getTime()方法可以获取从1970年1月1日00:00:00 UTC开始到这个Date对象所表示的时间所经过的毫秒数。不过,Date类在Java 8之后被认为是一种旧的日期时间处理方式,新的java.time包提供了更加强大和灵活的功能。
  • 示例代码如下:
import java.util.Date;
public class Main {
    public static void main(String[] args) {
        long millis = new Date().getTime();
        System.out.println(millis);
    }
}