Ich möchte das Datum wie 94 NOV 21 in 94/11/21 konvertieren mit SimpleDateFormat in Java.Vergleichen Sie eine Liste der DateFormats mit eingehenden Datum im String-Format
i erstellt ein einfaches Datumsformat
new SimpleDateFormat("yy MMM dd")
94 21. November zu analysieren. aber es ist nicht analysierbar, was ist das richtige Muster?
In meinem Code habe ich viele Standardformate des Datums, die ich handhabe, indem ich alle von ihnen in eine Liste (von DateFormats) hinzufüge und das eingehende Datum mit dieser Liste vergleiche und das nicht standardmäßige Datum behandle (R 250051Z FEB 99) innerhalb des Ausnahmeblocks, der gut funktioniert, aber mein Hauptproblem ist, dass ich 94 NOV 21 nicht mit neuem SimpleDateFormat ("yy MMM dd") parsen kann. Die letzte System.out-Anweisung geht zum Ausnahmeblock, aber es sollte mit behandelt werden neues SimpleDateFormat ("yy MMM dd"), aber das funktioniert nicht.
import java.util.List;
import java.util.Locale;
import java.io.UnsupportedEncodingException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import org.apache.commons.codec.binary.Base64;
import org.apache.commons.lang.StringUtils;
import java.nio.charset.StandardCharsets;
import org.apache.commons.lang.StringUtils;
public class Test2 {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println(getDate("August 21 99"));
System.out.println(getDate("21 August 1999"));
System.out.println(getDate("94 NOV 21"));
}
private static String getDate(String inputString) {
if (!StringUtils.isEmpty(inputString)) {
String input = inputString.replaceAll("[^A-Za-z0-9 ]", " ");
// System.out.println("input to formatter>>" + input);
String requiredDate = "";
SimpleDateFormat requiredDateFormat = new
SimpleDateFormat("MM/dd/yy");
List<SimpleDateFormat> dateFormats = new
ArrayList<SimpleDateFormat>() {
{
add(new SimpleDateFormat("MMM dd yyyy", Locale.US));
add(new SimpleDateFormat("MMM dd yy", Locale.US));
add(new SimpleDateFormat("yy MMM yy", Locale.US));
add(new SimpleDateFormat("dd MMM yyyy", Locale.US));
add(new SimpleDateFormat("M dd yyyy", Locale.US));
add(new SimpleDateFormat("dd M yyyy", Locale.US));
add(new SimpleDateFormat("dd MM yy", Locale.US));
add(new SimpleDateFormat("MM dd yy", Locale.US));
add(new SimpleDateFormat("M dd yyyy hh mm ss a",
Locale.US));
add(new SimpleDateFormat("dd M yyyy hh mm ss a",
Locale.US));
}
};
Date date = null;
for (SimpleDateFormat format : dateFormats) {
// System.out.println("in for loop");
try {
format.setLenient(false);
date = format.parse(input.trim());
if (date != null) {
requiredDate =
requiredDateFormat.format(date).toString();
break;
}
} catch (ParseException e) {
String day = inputString.subSequence(2, 4).toString();
String monYear = inputString.substring(10);
String dateToConvert = day + " " + monYear;
SimpleDateFormat customDateFormatter = new SimpleDateFormat("dd MMM yy");
try {
date = customDateFormatter.parse(dateToConvert);
if (date != null) {
requiredDate = requiredDateFormat.format(date).toString();
break;
}
} catch (Exception ex) {
requiredDate = null;
}
// System.out.println("Handle separately");
}
}
System.out.println("requiredDate>>>" + requiredDate);
return requiredDate;
}
else {
return null;
}
}
}
Hallo, ich habe meine Frage bearbeitet. – CoderCosmo