我有三个约会:
如果在startdate和enddate之间进行交付日期,则将完成添加。但是日期无法正确比较,日期格式也无法正常工作。
这是我的代码:
private long addTotalLiveBirthChild(Members member) {
String deliveryDateStr = member.details().get("DOO");
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd/MM/yyyy");
Date dooDate = null;
Date startDate = new Date(startDateTime);
Date endDate = new Date(endDateTime);
try {
dooDate = simpleDateFormat.parse(deliveryDateStr);
new SimpleDateFormat("dd/MM/yyyy").format(startDate);
new SimpleDateFormat("dd/MM/yyyy").format(endDate);
} catch (ParseException e) {
e.printStackTrace();
}
System.err.println("DeliveryDate:" + dooDate + " startDate:" + startDate + " endDate:" + endDate);
if(dooDate.after(startDate) && dooDate.before(endDate) ){
totalCountOfLiveBirth = totalCountOfLiveBirth + Long.parseLong(member.details().get("Num_Live_Birth"));
}
return totalCountOfLiveBirth;
}
以下是打印结果:
答案 0 :(得分:0)
private long addTotalLiveBirthChild(Members member) {
String deliveryDateStr = member.details().get("DOO");
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd/MM/yyyy");
Date dooDate = null;
Date startDate = new Date(startDateTime);
Date endDate = new Date(endDateTime);
try {
dooDate = simpleDateFormat.parse(deliveryDateStr);
new SimpleDateFormat("dd/MM/yyyy").format(startDate); // return String representation, which you don't use anywhere
new SimpleDateFormat("dd/MM/yyyy").format(endDate); // return String representation, which you don't use anywhere
} catch (ParseException e) {
e.printStackTrace();
}
System.err.println("DeliveryDate:" + dooDate + " startDate:" + startDate + " endDate:" + endDate);
if(dooDate.after(startDate) && dooDate.before(endDate) ){
totalCountOfLiveBirth = totalCountOfLiveBirth + Long.parseLong(member.details().get("Num_Live_Birth"));
}
return totalCountOfLiveBirth;
}
请参阅上面的评论(返回字符串表示,您不在任何地方使用)。你不需要这一行。
据我了解,您只想比较日期,没有时间。然后你应该使用这个功能:
public static Date zeroTimeDate(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.set(Calendar.MILLISECOND, 0);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.HOUR, 0);
return calendar.getTime();
}
Date startDate = zeroTimeDate(new Date(startDateTime));
Date endDate = zeroTimeDate(new Date(endDateTime));
注意: 如果你可以使用Java 8 Date API,它可能会更简单。
答案 1 :(得分:0)
我会说得很简单。
步骤:
像这样:
long deliverytime,starttime,endtime;
//.. declare values and convert them from string to long
if(deliverytime > starttime && deliverytime < endtime){
//do your stuff
} else {
//it´s not between
}
我在sql中更多地遇到这个问题,人们可以理解的安全数据,但是他们想知道为什么数据库与真/假不同而不是0/1。
<强> 重要 强> Dateformat用于显示用户的日期,程序员不应在代码中使用它,除非是textview.settext(formatdate);