내 입력 날짜 (형식 mm/dd/yyyy HH:mm:ss
)가 startDate
및 endDate
범위 내에 있는지 아래 코드를 사용합니다.Java DateComparison
나는이 논리에서 compareTo()
을 사용합니다. 그러나 형식이 mm/dd/yyyy
인 경우, 월만을 비교하고 "MYLOGIC methood"
에 출력을 인쇄합니다. 그러나 입력 된 날짜가 startDate
및 endDate
범위 내에 있는지 비교하기 위해 비교할 연도가 필요합니다.
public class DateLogicNew {
public static void main(String[] args) {
String startDate[] = new String[1];
String endDate[] = new String[1];
startDate[0] = "01/01/0600 00:00:00";
endDate[0] = "11/27/3337 00:00:00";
String inputArr[] = { "05/01/0500 01:00:00", "11/27/3337 00:00:00",
"05/05/0700 00:00:00", "11/27/2337 00:00:00",
"06/05/4000 00:00:00" };
String protectedArr[] = new String[inputArr.length];
int temp[] = new int[inputArr.length];
System.out.println(inputArr.length);
System.out.println("Length of the inputArr: " + inputArr.length);
// System.out.println("");
for (int i = 0; i < inputArr.length; i++) {
if (inputArr[i]
.matches("^([0-1][0-9])/([0-3][0-9])/([0-9]{4})(?:([0-2][0-9]):([0-5][0-9]):([0-5][0-9]))?$")) {
System.out.println("Inside if loop");
if (inputArr[i].compareTo(startDate[0]) > 0
&& inputArr[i].compareTo(endDate[0]) < 0) {
System.out.println("inside the compare condition");
temp[i] = 1;
protectedArr[i] = inputArr[i];
System.out
.println("Values of the inputArr in MYLOGIC method : "
+ protectedArr[i]);
}
} else {
temp[i] = 0;
}
}
System.out.println("");
for (int i = 0; i < inputArr.length; i++) {
if (temp[i] == 1) {
inputArr[i] = protectedArr[i];
}
System.out
.println("Final Value to the output port: " + inputArr[i]);
}
}
}
문제는 무엇이 발생했는지, 예상되는 것, 어떻게 다른지, 일부 샘플 입력 및 출력 등을 명확하게 설명해야합니다. 또한 내장 날짜를 사용하는 것이 더 쉽습니다 파싱 및 처리 라이브러리. – pvg
왜 비교를 위해서 실제'Date' 인스턴스를 사용하지 않습니까? 문자열 기반 날짜 비교는 까다로울 수 밖에 없습니다. 문자열 비교는 문자 단위로 이루어 지므로 인덱스 1 (0과 1)의 문자가 독립적으로 비교되기 때문에 '10/31/9999'는 여전히 '11/27/3337'보다 "작습니다" 나머지는 – Thomas
1 년 동안 500 명 중 1 명이 정말로 걱정 되십니까? 아니면 다른 일이 여기에 있습니까? 이 예제 데이터는 이상합니다. –