Java8常见日期时间处理

1、获取今天的日期:
Java 8 中的 LocalDate 用于表示当天日期。和java.util.Date不同,它只有日期,不包含时间。

LocalDate today = LocalDate.now();
System.out.println("今天的日期:" + today); // 今天的日期:2020-02-18

2、获取年、月、日信息:

LocalDate today = LocalDate.now();
int year = today.getYear();
int month = today.getMonthValue();
int day = today.getDayOfMonth();
System.out.println(year + "年" + month + "月" + day +"日"); // 2020年2月18日

3、处理特定日期:
我们通过静态工厂方法now()非常容易地创建了当天日期,你还可以调用另一个有用的工厂方法LocalDate.of()创建任意日期, 该方法需要传入年、月、日做参数,返回对应的LocalDate实例。这个方法的好处是没再犯老API的设计错误,比如年度起始于1900,月份是从0开 始等等。

LocalDate localDate = LocalDate.of(2020, 2, 18);
System.out.println("date: " +localDate); // date: 2020-02-18

4、获取当前时间:
当前时间就只包含时间信息,没有日期

LocalTime localTime = LocalTime.now();
System.out.println("当前时间:" + localTime); // 当前时间:23:10:39.817

5、计算一周后日期:

LocalDate today = LocalDate.now();
System.out.println("今天的日期是:" + today); // 今天的日期是:2020-02-18
LocalDate nextWeek = today.plus(1, ChronoUnit.WEEKS);
System.out.println("一周后日期是:" + nextWeek); // 一周后日期是:2020-02-25

6、计算一年前或一年后:

LocalDate today = LocalDate.now();
LocalDate previousYear = today.minus(1, ChronoUnit.YEARS);
System.out.println("一年前的日期:" + previousYear); // 一年前的日期:2019-02-18
LocalDate nextYear = today.plus(1, ChronoUnit.YEARS);
System.out.println("一年后的日期:" + nextYear); // 一年后的日期:2021-02-18

7、Clock时钟类:
Java 8增加了一个Clock时钟类用于获取当时的时间戳,或当前时区下的日期时间信息。以前用到System.currentTimeInMillis()和TimeZone.getDefault()的地方都可用Clock替换。

Clock systemUTC = Clock.systemUTC();
System.out.println("时间戳:" + systemUTC.millis()); // 时间戳:1582039453353
Clock defaultZone = Clock.systemDefaultZone();
System.out.println("时间戳:" + defaultZone.millis()); // 时间戳:1582039453353

8、处理时区:
Java 8不仅分离了日期和时间,也把时区分离出来了。现在有一系列单独的类如ZoneId来处理特定时区,ZoneDateTime类来表示某时区下的时间。

ZoneId zoneId = ZoneId.of("America/New_York");
LocalDateTime localDateTime = LocalDateTime.now();
ZonedDateTime zonedDateTime = ZonedDateTime.of(localDateTime, zoneId);
System.out.println("Current date and time in a particular timezone : " + zonedDateTime); // Current date and time in a particular timezone : 2020-02-18T23:31:30.894-05:00[America/New_York]

9、计算闰年:

LocalDate today = LocalDate.now();
int year = today.getYear();
if (today.isLeapYear()) { // 2020年是闰年
    System.out.println(year + "年是闰年");
} else {
    System.out.println(year + "年不是闰年");
}

10、获取当前时间戳:
Instant类有一个静态工厂方法now()会返回当前的时间戳

Instant instant = Instant.now();
System.out.println("当前时间戳:" + instant.toEpochMilli()); // 当前时间戳:1582040496550

11、格式化日期:

String date = "20200218";
LocalDate parse = LocalDate.parse(date, DateTimeFormatter.BASIC_ISO_DATE);
System.out.println(date + "格式化后的日期:" + parse); // 20200218格式化后的日期:2020-02-18

12、日期和字符串互相转化:

LocalDateTime localDateTime = LocalDateTime.now();
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss");
String formatDate = localDateTime.format(dateTimeFormatter);
System.out.println("日期转化为字符串:" + formatDate); // 日期转化为字符串:2020/02/18 23:52:55
DateTimeFormatter format2 = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss");
LocalDate localDate1 = LocalDate.parse(formatDate, format2);
System.out.println("日期类型:" + localDate1); // 日期类型:2020-02-18
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值