J'utilise le code ci-dessous pour voir si ma date d'entrée (format mm/dd/yyyy HH:mm:ss
) est comprise entre startDate
et endDate
. J'ai utilisé compareTo()
dans cette logique. Mais avec le format mm/dd/yyyy
, il compare le mois seul et imprime la sortie en "MYLOGIC methood"
. Mais j'ai besoin de comparer l'année pour voir si la date d'entrée est dans les limites startDate
et endDate
.Java DateComparison
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]);
}
}
}
Vous devez être plus clair pour décrire votre problème - ce qui se passe, ce que vous attendez d'arriver, comment ils diffèrent, une entrée d'échantillonnage et de sortie, etc. Vous pouvez également trouver plus facile à utiliser la date intégrée analyse et gestion des bibliothèques. – pvg
Pourquoi n'utilisez-vous pas les instances 'Date' actuelles pour faire la comparaison? Comparer des dates basées sur des chaînes est forcément difficile. Les comparaisons de chaînes sont faites caractère par caractère et donc '10/31/9999' serait toujours" plus petit "que' 11/27/3337', parce que les caractères de l'index 1 (0 et 1) sont comparés indépendants du reste. – Thomas
Vous souciez-vous vraiment de 1 AM en l'an 500? Ou est quelque chose d'autre qui se passe ici? Cet exemple de données est étrange. –