2017-06-26 JDK8时间模型——LocalDateTime && DateTimeFormatter

时间

前文讲述了时间点 Instant类。JDK8时间模型——Instant

现在分析 时间表 LocalDateTime 和 日期格式 DateTimeFormatter。
LocalDateTime 类似 之前的Calendar;DateTimeFormatter 和 之前的 SimpleDateFormatter 相似。

LocalDateTime

直接上代码:

    // 当前日期
    LocalDateTime localDateTime = LocalDateTime.now();
    System.out.println(localDateTime); // 2017-06-26T17:46:11.366
    // 改变 年月日
    int year=2017, month=6, dayOfMonth=25;
    localDateTime = localDateTime.withYear(year);
    localDateTime = localDateTime.withMonth(month);
    localDateTime = localDateTime.withDayOfMonth(dayOfMonth);
    System.out.println(localDateTime); // 2017-06-25T17:46:11.366

    // 裁剪(用的有限制,日以上单位均无效)
    localDateTime = localDateTime.truncatedTo(ChronoUnit.DAYS);
    System.out.println(localDateTime); // 2017-06-25T00:00
    localDateTime.truncatedTo(ChronoUnit.MONTHS); // error : UnsupportedTemporalTypeException: Unit is too large to be used for truncation

    // String => LocalDateTime
    DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
    localDateTime = LocalDateTime.parse("2017-06-01 01:02:03", dtf);
    System.out.println(localDateTime); //2017-06-01T01:02:03

DateTimeFormatter

已提供的若干静态formatter:
// 默认提供 System.out.println(ISO_LOCAL_DATE.format(LocalDateTime.now())); // 2017-06-26 System.out.println(ISO_DATE.format(LocalDateTime.now())); // 2017-06-26 System.out.println(BASIC_ISO_DATE.format(LocalDateTime.now())); // 20170626

如果不够用,当然可以自定义DateTimeFormatter :
// 自定义 DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); System.out.println(dtf.format(LocalDateTime.now())); // 2017-06-26 17:37:57

改了原来的DateUtils吗?

并没有改原来的类,同时旧代码的调用保留。
替换需要更多的TeseCase,原来的类继续使用,新功能建议使用新DateUtils。

收获

新的Date API 熟悉并使用了它们写了新的DateUtils。

你可能感兴趣的:(2017-06-26 JDK8时间模型——LocalDateTime && DateTimeFormatter)