当我按照此13/01/2014
和13-01-2014
String text = "JAN 13,2014 09:15";
String patternst = "\d\d\d\d-\d\d-\d\d*";
Pattern pattern = Pattern.compile(patternst);
Matcher matcher = pattern.matcher(text);
String data = "";
while (matcher.find()) {
data = matcher.group(0);
}
try {
int year = Integer.parseInt(data.split("-")[0]);
int month = Integer.parseInt(data.split("-")[1]);
int day = Integer.parseInt(data.split("-")[2]);
Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, year);
cal.set(Calendar.MONTH, month);
cal.set(Calendar.DAY_OF_MONTH, day);
Date theDate1 = cal.getTime();
SimpleDateFormat format1 = new ("dd/MM/yyyy");
String temp = format1.format(theDate1);
System.out.println("Hello, World! " + temp);
} catch (Exception e) {
Date theDate1 = new Date(text);
SimpleDateFormat format1 = new SimpleDateFormat("dd/MM/yyyy");
String temp = format1.format(theDate1);
System.out.println("Hello, World! " + temp);
}
然后我收到类似Exception in thread "main java.lang.IllegalArgumentException
的错误,否则其他一些输出正在提交如何解决此问题我希望日期格式dd/MM/yyyy
如果文字是23/01/2017
或{ {1}}或13-01-2014
,13-01-2015.00
或13-01-2014.567
答案 0 :(得分:0)
首先,请避免使用标记为@Deprecated
的类new Date(String s)
的类和方法。
现在解析Date
的正确方法是使用SimpleDateFormat
,因此您需要创建一个正确的模式来解析日期。
在您的情况下,您的文字JAN 13,2014 09:15
匹配模式为MMM dd,yyyy HH:mm
。
这是一个如何使用它的代码示例:
try {
String pattern = "MMM dd,yyyy HH:mm";
String text = "JAN 13,2014 13:15";
SimpleDateFormat format = new SimpleDateFormat(pattern);
Date date = format.parse(text);
// Directly output the date
System.out.println(date);
// Output the date with another pattern
String pattern2 = "dd/MM/yyyy HH:mm:ss";
SimpleDateFormat format2 = new SimpleDateFormat(pattern2);
System.out.println(format2.format(date));
} catch (ParseException e) {
e.printStackTrace();
}
当您必须以多种不同的格式解析日期时,您可以使用不同的可能模式创建一个数组:
public static Date parse(String text) {
SimpleDateFormat format = new SimpleDateFormat();
// The detaild pattern must be before the vague
String[] pattern = {
"MMM dd,yyyy HH:mm",
"MMM dd,yyyy",
"dd/MM/yyyy HH:mm:ss",
"dd/MM/yyyy",
"dd-MM-yyyy HH:mm:ss",
"dd-MM-yyyy",
};
for(String p : pattern) {
try {
format.applyPattern(p);
return format.parse(text);
} catch (ParseException ignore) {
}
}
return null; // or Throw an Exception
}
仅在需要处理用户输入时使用。 (另外我建议将用户输入限制为仅提供所需的格式。)