如何与java中的字符串日期格式进行比较?
我得到两种类型的输入如何与java中的字符串日期格式进行比较?,java,date,Java,Date,我得到两种类型的输入 1.String date1 = "07/01/2017"; 2.String date2 = ""2017-01-12 00:00:00.0"; 如何比较两种日期格式。如果将格式设置为date1,我想执行一个功能。如果将格式设置为date2,则执行另一个功能。如何使用字符串比较两种日期格式 例: 如果您想知道日期的格式是mm/dd/yyyy还是mm-dd-yyyy,或者类似的格式,您可能需要使用正则表达式 您可以检查这一点以了解实现它的方法使用正则表达式: St
1.String date1 = "07/01/2017";
2.String date2 = ""2017-01-12 00:00:00.0";
如何比较两种日期格式。如果将格式设置为date1,我想执行一个功能。如果将格式设置为date2,则执行另一个功能。如何使用字符串比较两种日期格式
例:
如果您想知道日期的格式是mm/dd/yyyy还是mm-dd-yyyy,或者类似的格式,您可能需要使用正则表达式 您可以检查这一点以了解实现它的方法使用正则表达式:
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.");
}
使用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;
}
}
}
import java.text.ParseException;
导入java.text.simpleDataFormat;
导入java.util.Objects;
导入java.util.Optional;
导入java.util.stream.stream;
公开课考试{
公共静态void main(字符串[]args){
可选格式=测试(“07-01-2017”、“dd/mm/yyyy”、“dd-mm-yyyy”);
if(format.isPresent())
System.out.println(format.get());
}
公共静态可选测试(字符串日期、字符串…格式){
返回流.of(格式)
.map(格式->新对(新SimpleDataFormat(格式),格式))
.map(p->{
试一试{
p、 _1.解析(日期);
返回p._2;
}捕获(解析异常){
返回null;
}
})
.filter(对象::非空)
.findFirst();
}
公共静态类对{
公开决赛F_1;
公开决赛S_2;
公共对(F_1,S_2){
这个._1=_1;
这个._2=_2;
}
}
}
我想,我们可以声明两种日期格式,解析日期并比较两个日期实例。以下是示例代码:
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.");
}
}
}
比较日期格式,或者比较不同格式的两个日期?但是我需要比较字符串,如何使用字符串比较日期格式“比较
DateFormat
”是什么意思?它们本质上是不可比的,就像一个勺子本质上既不比另一个大也不比另一个小一样。你能给我举个例子吗?@SaiKishoreMani你能回答你被问到的问题吗?你太宽泛了,这不清楚这个答案没有抓住要点:在OP中,我们不知道日期字符串是否匹配FORMAT1
或FORMAT2
。您的回答将导致未捕获的ParseExceptions
@SME\u Dev我已尝试解决您的问题。请查收。谢谢你的反馈。这也是可行的解决方案,但这取决于你的品味。一般来说,我不喜欢在正常的逻辑流中使用异常,只是从性能和过载的角度来看。
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.");
}
}
}