我将输入作为两种类型。
1.String date1 = "07/01/2017";
2.String date2 = ""2017-01-12 00:00:00.0";
如何比较两种日期格式。我希望执行一个功能,如果我得到格式为date1.If我得到date2格式然后另一个功能。如何使用字符串比较两种日期格式。
例如:
if( date1.equals('dd/mm/yyyy')){
//perform functionality
}
答案 0 :(得分:2)
使用RegEx:
String date1 = "07/01/2017";
if (date1.matches("^([0-9]{1,2}/){2}[0-9]{2,4}$")) {
System.out.println("Date in MM/dd/yyyy format");
} else if (date1.matches("^[0-9]{2,4}(-[0-9]{1,2}){2}\\s[0-9]{1,2}(:[0-9]{1,2}){2}\\.[0-9]{1,}$")) {
System.out.println("Date in yyyy-MM-dd hh:mm:ss.t format");
} else {
System.err.println("Unsupported Date format.");
}
答案 1 :(得分:1)
如果你想知道日期的格式是mm / dd / yyyy还是mm-dd-yyyy或同样的想法,你可能需要使用正则表达式。
您可以查看此方法以实现它What is the regular expression for Date format dd\mm\yyyy?
答案 2 :(得分:0)
使用RegEx的解决方案很好,但您也可以这样做:
第一个参数是日期的字符串表示形式。下一个参数是var arg。因此,您可以根据需要传递任意数量的日期格式。它将尝试解析,如果成功则返回正确的格式。
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Objects;
import java.util.Optional;
import java.util.stream.Stream;
public class Test {
public static void main(String[] args) {
Optional<String> format = test("07-01-2017", "dd/mm/yyyy", "dd-mm-yyyy");
if (format.isPresent())
System.out.println(format.get());
}
public static Optional<String> test(String date, String... formats) {
return Stream.of(formats)
.map(format -> new Pair<>(new SimpleDateFormat(format), format))
.map(p -> {
try {
p._1.parse(date);
return p._2;
} catch (ParseException e) {
return null;
}
})
.filter(Objects::nonNull)
.findFirst();
}
public static class Pair<F, S> {
public final F _1;
public final S _2;
public Pair(F _1, S _2) {
this._1 = _1;
this._2 = _2;
}
}
}
答案 3 :(得分:0)
我想,我们可以声明两种日期格式并解析日期并比较两个日期实例。以下是示例代码:
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class DateCompare {
private static final String FORMAT1 = "MM/dd/yyyy";
private static final String FORMAT2 = "yyyy-MM-dd hh:mm:ss";
private Date parseDate(String format1, String format2, String dateStr) throws ParseException {
boolean isException = false;
Date date = null;
try {
date = parseDate(format1, dateStr);
} catch (ParseException e) {
isException = true;
}
if (isException) {
date = parseDate(format2, dateStr);
}
return date;
}
private Date parseDate(String format1, String dateStr) throws ParseException {
SimpleDateFormat dateFormat = new SimpleDateFormat(format1);
return dateFormat.parse(dateStr);
}
public static void main(String[] args) throws ParseException {
DateCompare compare = new DateCompare();
Date date1 = compare.parseDate(FORMAT1, FORMAT2,"07/01/2017");
Date date2 = compare.parseDate(FORMAT1, FORMAT2, "2017-07-01 00:00:00");
if (date1.compareTo(date2) == 0) {
System.out.println("Dates are equal.");
} else {
System.out.println("Dates are not equal.");
}
}
}