Java

Java8日期和时间API

mybatis自 3.4.5 开始,已经支持使用LocaldateTime作为时间查询入参,映射类型为TimeStamp,参考地址: https://mybatis.org/mybatis-3/zh/configuration.html#typeHandlers

1 前言 #

在介绍Java SE 8中新的日期时间库前,先了解下Java 8之前的日期时间工具的诟病。

在Java SE 8前,日期时间工具库在java.util包中,包括:

  • java.util.Date:表示日期和时间
  • java.util.Calendar以及其实现子类:表示各种日历系统,常用的是格林威治日历java.util.GregorianCalendar
  • java.util.TimeZone以及其实现子类:表示时区偏移量和夏令时

以及辅助其进行格式化和解析的工具库在java.text包中,包括:

  • java.text.DateFormat:格式化日期时间和解析日期时间的工具抽象类
  • java.text.SimpleDateFormat:DateDateFormat的实现
...

Java新日期时间包的使用

参考: unable-to-obtain-localdatetime-from-temporalaccessor-when-parsing-localdatetime


快速开始:

 1@SuppressWarnings("all")
 2public class JTSimpleIntro {
 3    static String DATE_TIME_FORM = "yyyy-MM-dd HH:mm:ss";
 4
 5    static void parseDateTimeString(String yyyyMMdd_HHmmss) {
 6        System.out.println(LocalDateTime.parse(yyyyMMdd_HHmmss));
 7    }
 8
 9    static void parseDateTimeStringWithFormat(String yyyyMMdd_HHmmss) {
10        System.out.println(LocalDateTime
11                .parse(yyyyMMdd_HHmmss,
12                        DateTimeFormatter.ofPattern(DATE_TIME_FORM)));
13    }
14
15    static void parseDateString(String yyyyMMdd) {
16        System.out.println(LocalDate.parse(yyyyMMdd));
17    }
18
19    static void parseTimeString(String HHmmss) {
20        System.out.println(LocalTime.parse(HHmmss));
21    }
22
23    public static void main(String[] args) {
24        parseDateTimeString("2012-06-09T13:12:11");
25        parseDateTimeStringWithFormat("2012-06-09 13:12:11");
26        parseDateString("2012-06-06");
27        parseTimeString("13:12:11");
28    }
29}

以下是API示例:

...

背包问题2例

背包问题其实属于 动态规划Dynamic Programming )问题的一种。动态规划的手段是将大问题拆解为多个小问题,小问题解决之后,大问题也就随之而解。

背包问题的典型描述是:

给定n种物品和一背包。物品i的重量为wi,其价值为vi,背包的容量为c

问应该如何选择装入背包中的物品,使得装入背包中物品的总价值最大?

...