java 8提供了一套更加方便的日期api ,
而之前 的 simpleDateFormat 等等线程不安全,所以推荐学习新的api ,
主要有
LocalDate,LocalTime,还有 LocalDateTime
localDate 只是显示日期, localTime 显示 时分秒,LocalDateTime 所有的都显示
打印当前时间:
@Test
public void printe()
{
ZonedDateTime ldt = LocalDateTime.now().atZone(ZoneOffset.ofHours(8));
String tmp = ldt.format(DateTimeFormatter.ofPattern("\"yyyy-MM-dd HH:mm:ss\""));
System.out.println(tmp);
}
由于 LocalDateTime 是以 Unix元年来计算的,所以和北京差8个小时,要把时区给补回来
下面,来计算一下,自你出生到现在,你活了多少天
@Test
public void printBetween() throws InterruptedException {
//计算2个日期的间隔
LocalDate l = LocalDate.of(1999,4,28);
LocalDate r = LocalDate.now();
System.out.println(r.toEpochDay()-l.toEpochDay());
}
Instant时间戳
@Test
public void print33()
{
/*
* 时间戳 :Instant 类 (unix元年 :utc时间)
*
* */
//时区差8个小时,加上 8个小时
OffsetDateTime t = Instant.now().atOffset(ZoneOffset.ofHours(8));
System.out.println(Instant.now());
System.out.println(t);
//转毫秒时间戳,或者直接 System.currentTimeMills
System.out.println(t.toEpochSecond());
}
常用的方法使用
@Test
public void print33()
{
LocalDateTime t = LocalDateTime.now();
System.out.println(t.getDayOfWeek());
System.out.println(t.getDayOfYear());
System.out.println(t.getDayOfMonth());
System.out.println(t.compareTo(t.minusDays(1)));
}