一、System.currentTimeMillis()
此方法不受时区影响,得到的结果是时间戳格式的。例如:1626077908175
我们也可以将时间戳格式化,如
SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String format = sdf.format(System.currentTimeMillis());
System.out.println(format);
则该时间戳对应的时间为
2021-07-12 16:20:57
注意:此方法会根据我们的系统时间返回当前值,因为世界各地的时区是不一样的。
二、java.util.Date
java中,获取当前日期最简单的方法之一就是直接实例化位于Java包java.util的Date类
Date date = new Date();
也可以对Date格式化
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String format = sdf.format(date);
System.out.println(format);
三、Calendar API
Calendar类,专门用于转换特定时刻和日历字段之间的日期和时间。
使用Calendar 获取当前日期和时间非常简单:
Calendar calendar = Calendar.getInstance();
与Date类似,也可以使用SimpleDateFormat格式化
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String format = sdf.format(calendar.getTime());
System.out.println(format);
四、Date/Time API
Java 8提供了一个全新的API,用以替换java.util.Date和java.util.Calendar。Date / Time API提供了多个类,帮助我们来完成工作,包括:
- LocalDate
只是一个日期,没有时间。 这意味着我们只能获得当前日期,但没有一天的具体时间
LocalDate now = LocalDate.now();
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd");
String format = dtf.format(now);
System.out.println(format);
得到的结果: 2021-07-12
格式化的类与之前的不一样,使用的是DateTimeFormatter
- LocalTime
LocalTime与LocalDate相反,它只代表一个时间,没有日期。 这意味着我们只能获得当天的当前时间,而不是实际日期:
LocalTime now = LocalTime.now();
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("HH:mm:ss");
String format = dtf.format(now);
System.out.println(format);
得到的结果:16:44:02
- LocalDateTime
前两个类的组合,即日期加时间
LocalDateTime now = LocalDateTime.now();
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String format = dtf.format(now);
System.out.println(format);
得到的结果:2021-07-12 16:46:28
- ZonedDateTime
- LocalDate