嘿伙计我有问题。 我的数据库中的开始/结束日期(日期,日期2)存储为dd / mm / yyyy。 我想测试今天的日期是否在我刚刚提到的两个日期之间。 我尝试过这个布尔函数,但它没有工作我不知道为什么它一直都会返回false:
private Boolean test() {
Boolean bool = false;
String ch,ch2;
Date d=new Date();
Date date2=new Date();
Date date=new Date();
try
{
rs=st.executeQuery("select *from mytab");
if(rs.next())
{
ch = rs.getString(2);
ch2 = rs.getString(3);
try
{
date = new SimpleDateFormat("dd-MM-YYYY", Locale.ENGLISH).parse(ch);
date2 = new SimpleDateFormat("dd-MM-YYYY", Locale.ENGLISH).parse(ch2);
}catch(ParseException s){
System.out.println("Check parsing");
}
if(d.before(date2) && d.after(date))
{
bool=true;
}
}
}
catch (SQLException e){System.out.println("Check the SQl");}
return bool;
}
答案 0 :(得分:1)
因为您的日期值以两种不同的格式存储...是用于将日期/时间信息存储为文本,您需要尝试多个格式化程序才能将值解析为日期值。
Apache Commons有一个可以做到这一点的API,但你也可以编写自己的API,例如......
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Test {
public static void main(String[] args) {
String startDate = "14-08-2010";
String endDate = "20/08/2020";
SimpleDateFormat sdf[] = new SimpleDateFormat[] {
new SimpleDateFormat("dd/MM/yyyy"),
new SimpleDateFormat("dd-MM-yyyy")};
Date dateStart = parse(startDate, sdf);
Date dateEnd = parse(endDate, sdf);
System.out.println("Is today bewteen " + dateStart + " and " + dateEnd);
Date today = new Date();
if (today.after(dateStart) && today.before(dateEnd)) {
System.out.println("...Yes");
} else {
System.out.println("...No");
}
}
public static Date parse(String value, DateFormat... formatters) {
Date date = null;
for (DateFormat formatter : formatters) {
try {
date = formatter.parse(value);
break;
} catch (ParseException e) {
}
}
return date;
}
}
打印出来......
Is today bewteen Sat Aug 14 00:00:00 EST 2010 and Thu Aug 20 00:00:00 EST 2020
...Yes