Java日期格式化参数对照表

常用格式: yyyy-MM-dd HH:mm:ss

纪元标记AD备注
y/u年份2001 u 在使用jdk8格式化使用过
Y周年年份2001 当天所在的周属于的年份, (一年中的最后一周存在跨年的情况) 来自 http://www.cnblogs.com/zheting/p/7702470.html
M月份July or 07
d一个月的第几天10
h A.M./P.M. (1~12)格式小时12
H一天中的小时 (0~23)22
m分钟数30
s秒数55
S毫秒数234
E星期几Tuesday
D一年中的第几天360
F一个月中第几周的周几2 (second Wed. in July)
w一年中第几周40
W一个月中第几周1
aA.M./P.M. 标记PM
k一天中的小时(1~24)24
K A.M./P.M. (0~11)格式小时10
z时区Eastern Standard Time
'文字定界符Delimiter
"单引号 `
// 严格判断时间是否合法
DateTimeFormatter ldt = DateTimeFormatter.ofPattern("uuuuMMdd").withResolverStyle(ResolverStyle.STRICT);
		try {
		LocalDate localDate = LocalDate.parse("20190229", ldt);
			System.out.println(localDate);
		} catch (Exception e) {
		    e.printStackTrace();
		}
// 获取两个日期间隔的所有月份
public static List<String> getBetweenMonths(String start, String end) {

    LocalDate startDate = LocalDate.parse(start);
    LocalDate endDate = LocalDate.parse(end);
    return Stream.iterate(startDate, localDate -> localDate.plusMonths(1))
    		// 截断无限流,长度为起始时间和结束时间的差+1个
    		.limit(ChronoUnit.MONTHS.between(startDate, endDate) + 1)
    		// 由于最后要的是字符串,所以map转换一下
    		.map(LocalDate::toString)
    		// 把流收集为List
    		.collect(Collectors.toList());
}
/** LocalDateTime 转化成 Date*/
Function<LocalDateTime, Date> dateTime2Date=l->Date.from(l.toInstant(ZoneOffset.of("+8")));
/** Date 转化成 LocalDateTime*/
Function<Date, LocalDateTime> date2DateTime=d->d.toInstant().atOffset(ZoneOffset.of("+8")).toLocalDateTime();