【问题标题】:How do I get the maximum date (in YYYYMM format) from an array of dates in java?如何从 java 中的日期数组中获取最大日期(以 YYYYMM 格式)?
【发布时间】:2023-01-11 16:19:43
【问题描述】:

我想从 yyyyMM 格式的日期数组中找出最大的日期。例如,假设我的日期数组列表是:

["202210","202211","202212","202301"]

那么正确的值应该是202301

我尝试使用 SimpleDateFormat 类,然后解析日期,然后找到最大日期,如下所示:

List<String> dates=Arrays.asList("202210","202211","202212","202301");  
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMM",Locale.getDefault());
List<Date> temp = new ArrayList<>();
try{
    for(String date: dates){
        temp.add(sdf.parse(date));
    }
}catch (ParseException e) {
    e.printStackTrace();
}
System.out.println(Collections.max(temp)); //shows Sun Jan 01 00:00:00 GMT 2023

如何将Sun Jan 01 00:00:00 GMT 2023 转换为202301

【问题讨论】:

  • 如果它们是字符串,你可以得到最大的一个:Collections.max(dates)
  • 请不要使用SimpleDateFormat
  • System.out.println(Collections.max(temp)) 将使用 java.util.DatetoString(),它不使用您想要的格式。

标签: java simpledateformat


【解决方案1】:

假设您想以与列表相同的原始格式显示最大日期,则无需转换为真正的日期,假设日期字符串始终采用 yyyyMM 格式。在这种情况下,字符串将按日期正确排序,我们可以直接使用Collections#max

List<String> dates=Arrays.asList("202210","202211","202212","202301"); 
System.out.println(Collections.max(dates));  // 202301

【讨论】:

    【解决方案2】:

    由于数组是 String 类型,您可以简单地找到按时间顺序排列的最大字符串并使用它。您当前找到最大值的逻辑仍然有效,或者您可以使用一些 Collection 来为您做这件事。

    它会给你正确的结果,因为你的格式是yyyyMM,这意味着以后的年份总是大于较小年份的字符串值。

    例如。 “202210”将始终小于“202211”或“202301”

    将它们视为 String 还将节省您将它们解析为 Date 对象的计算时间。

    【讨论】:

      猜你喜欢
      • 2022-07-07
      • 2014-05-31
      • 2019-02-03
      • 2012-06-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-23
      • 2020-02-05
      相关资源
      最近更新 更多