Java基础 Day16
一、Date 类(不常用)
代表日期和时间的类
public Date() | 创建一个Date对象,代表的是系统当前此刻日期时间 | |
public Date(long time) | ||
public long getTime() | ||
public void setTime(long time) |
二、SimpleDateFormat 类(不常用)
用于日期格式化
public SimpleDateFormat() | |
public SimpleDateFormat(String pattern) | |
public final String format(Date date) | |
public final Date parse(String source) |
三、Calendar 类(不常用)
代表的是系统此刻时间对应的日历
通过它可以单独获取、修改时间中的年、月、日、时、分、秒等
public int get(int field) | |
public void set(int field,int value) | |
public void add(int field,int amount) |
// 获取当前时间的日历对象
Calendar c = Calendar.getInstance();
// Calendar 是抽象类
// 通过此方法获取的是子类对象int y = c.get(Calendar.YEAR);
// 注意Calendar类中的月份是0-11
public final Date getTime() | 获取日期对象 |
四、日历类(JDK8)
LocalDate类:代表本地日期(年、月、日、星期)
LocalTime类:代表本地时间(时、分、秒、纳秒)
LocalDateTime类:代表本地日期、时间(年、月、日、星期、时、分、秒、纳秒)
1、获取对象
public static Xxxx now(): 获取系统当前时间对应的该对象 | LocaDate ld = LocalDate.now(); LocalTime lt = LocalTime.now(); |
public static Xxxx of(…):获取指定时间的对象 | LocalDate localDate1 = LocalDate.of(2099 , 11,11); LocalTime localTime1 = LocalTime.of(9, 8, 59); LocalDateTime localDateTime1 = LocalDateTime.of(2025, 11, 16, 14, 30, 01); |
2、常用的 get 方法
int getYear() | |
Month getMonth() | |
int getMonthValue() | |
int getDayOfMonth() | |
DayOfWeek getDayOfWeek() | |
int getHour() | |
int getMinute() | |
int getSecond() |
3、常用的 set 方法
withHour、withMinute、withSecond、withNano | |
plusHours、plusMinutes、plusSeconds、plusNanos | |
minusHours、minusMinutes、minusSeconds、minusNanos | |
equals、isBefore、isAfter |
Tips:LocalDateTime、LocalDate、LocalTime 都是不可变的, 上述方法返回的是一个新的对象
五、日期格式化类(JDK8)
DateTimeFormatter类:用于时间的格式化和解析
1、对象获取
static DateTimeFormatter ofPattern(格式) |
2、格式化
String format(时间对象) |
3、解析(调用的是日历类里的方法)
LocalDateTime.parse("解析字符串", 格式化对象) |
六、时间类(JDK8)
1、Instant 类(时间戳,类似于 Date)
static Instant now() | |
static Instant ofXxxx(long epochMilli) | |
ZonedDateTime atZone(ZoneId zone) | |
boolean isXxx(Instant otherInstant) | |
Instant minusXxx(long millisToSubtract) | |
Instant plusXxx(long millisToSubtract) |
Instant instant = Instant.now();
System.out.println("当前时间戳是:" + instant);
// 获取到的并不是东八区的时间ZoneId o = ZoneId.of("Asia/Shanghai");
ZonedDateTime zdt = Instant.now().atZone(o);
System.out.println(zdt);
2、ZoneId 类(时区)
static Set<String> getAvailableZoneIds() | |
static ZoneId systemDefault() | |
static ZoneId of(String zoneId) |
3、ZoneDateTime 类(带时区的时间对象)
static ZonedDateTime now() | |
static ZonedDateTime ofXxxx(...) | |
ZonedDateTime withXxx(时间) | |
ZonedDateTime minusXxx(时间) | |
ZonedDateTime plusXxx(时间) |
七、工具类(JDK8)
Duration 类:用于计算两个“时间”间隔(秒,纳秒)
Period 类:用于计算两个“日期”间隔(年、月、日)
ChronoUnit 类:用于计算两个“日期”间隔
String birthday = "1990年01月01日";
// 获取格式化对象
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy年M月d日");
// 格式化,得到日历类的对象
LocalDate birthdayDate = LocalDate.parse(birthday, formatter);
LocalDate now = LocalDate.now();
// 用 ChronoUnit类的方法计算年份差值
long diff = ChronoUnit.YEARS.between(birthdayDate, now);
System.out.println(diff); // 35