首页 > 解决方案 > 从给定的日期模式中查找年份值

问题描述

我必须编写一个函数来输入日期和日期格式并返回年份。一些有效的场景是:

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'的位置,一旦我可以使用该信息来解析日期。我该如何完成这个?

标签: java

解决方案


只需要求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

推荐阅读