gpt4 book ai didi

java - 验证具有不同格式的日期列表

转载 作者:行者123 更新时间:2023-11-29 08:34:34 25 4
gpt4 key购买 nike

我有一个要验证的日期列表,我有一个仅适用于单个日期的函数,但我现在想要一个日期列表。

规则:

1)当列表为空时,我返回true

2)当一个日期无效时,我切换到以下并将其从日期列表中删除

3) 编辑 当所有执行完成后,我返回 true(如果至少有一个有效)或 false(所有这些都未通过测试)。

编辑:而不是这个 isDateValid(String date) ==> isDateValid(List<LString> date)

日期列表:

List<String> dateList= new ArrayList<>();

dateList.add("2016-10-02T04:00:00.000Z");
dateList.add("2017-02-15T14:32:32");
dateList.add("2017-01-23");

函数(只有一个日期):

 public boolean isDateValid(String date ) {
List<SimpleDateFormat> knownPatterns = new ArrayList<>();
knownPatterns.add(new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss"));
knownPatterns.add(new SimpleDateFormat("yyyy-MM-dd"));
knownPatterns.add(new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ"));
knownPatterns.add(new SimpleDateFormat("MM/dd/yyyy"));

for (SimpleDateFormat pattern : knownPatterns) {
try {
Date timestamp = pattern.parse(date);
return true;
} catch (ParseException e) {
continue;
}
}
return false;
}

最佳答案

只需重用您现有的函数并添加另一个函数来提供列表所需的逻辑。

public boolean isDateValid(List<String> dates) {
if (dates == null || dates.isEmpty()) {
return true;
}

for (Iterator<String> iter = dates.iterator(); iter.hasNext(); ) {
String date = iter.next();
if (!isDateValid(date)) {
iter.remove();
}
}

// return true if at least one date is valid?
return !dates.isEmpty();
}

或者更好的是,如果您已经在使用 Java 8 并且想使用 Collection 和 Lambdas 的新方法

public boolean isDateValid(List<String> dates) {
if (dates == null || dates.isEmpty()) {
return true;
}

dates.removeIf(date -> !isDateValid(date));

// return true if at least one date is valid?
return !dates.isEmpty();
}

关于java - 验证具有不同格式的日期列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45229470/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com