java - 从给定的日期模式中查找年份值
问题描述
我必须编写一个函数来输入日期和日期格式并返回年份。一些有效的场景是:
1) dateformat = "yyyy-mm-dd"
date ="2018-10-26"
output : 2018
2) dateformat = "dd-mm-yy"
date ="28-10-16"
output : 16
3) dateformat = "yyQQ"
date ="16Q2"
output : 16
因此,格式可能因数据集而异。格式也可以是 yyyy/mm/dd、yyww(每周数据,如 18w1 -> 表示 2018 年的第一周等。
我一直在考虑的逻辑是搜索模式中连续'y'的位置,一旦我可以使用该信息来解析日期。我该如何完成这个?
解决方案
只需要求DateTimeFormatter
为您解析字符串,然后获取year
值:
static int getYear(String dateformat, String date) {
return DateTimeFormatter.ofPattern(dateformat).parse(date).get(ChronoField.YEAR);
}
测试
System.out.println(getYear("yyyy-MM-dd", "2018-10-26"));
System.out.println(getYear("dd-MM-yy", "28-10-16"));
System.out.println(getYear("yy'Q'Q", "16Q2"));
输出
2018
2016
2016