我希望将日期作为年,月,日而不需要几小时或几分钟或其他任何其他事情,而且我不想让一年,一个月和一个月每一天都由自己。因为作为一个完整的日期,我需要它与另一个日期进行比较
例如今天28.11.2012
并将其与11.12.2011
进行比较
好像今天减去11.12.2011
超过280天我想执行一些代码
答案 0 :(得分:13)
您可以使用SimpleDateFormat
。
获取当前日期的基础
DateFormat df = new SimpleDateFormat("MMM d, yyyy");
String now = df.format(new Date());
或
DateFormat df = new SimpleDateFormat("MM/dd/yy");
String now = df.format(new Date());
已编辑: 首先,你在String Formate中有日期。你必须转换成约会Formate。尝试下面的代码来做到这一点。你已经对String strThatDay & strTodaDay 您将获得两个Calender Object。
String strThatDay = "2012/11/27";
SimpleDateFormat formatter = new SimpleDateFormat("yyyy/MM/dd");
Date d = null;
try {
d = formatter.parse(strThatDay);//catch exception
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Calendar thatDay = Calendar.getInstance();
thatDay.setTime(d);
之后尝试下面的代码从两个日期获得Day:
long diff = today.getTimeInMillis() - thatDay.getTimeInMillis(); //result in millis
long days = diff / (24 * 60 * 60 * 1000);
尝试一下。希望它会对你有所帮助。
答案 1 :(得分:2)
始终使用 Simpledateformat(yyyy / mm / dd)进行比较..
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
String currentDateandTime = sdf.format(new Date());
使用此currentDateandTime与其他日期进行比较。
我认为这可能是一个解决方案。我必须得到2个日历的实例(1个用于当前日期,另一个用于比较日期。
Calendar cal1=Calendar.getInstance();
Date dt=null;
try
dt = sdf.parse(currentdate);
cal1.setTime(dt);
}catch (ParseException e)
{
e.printStackTrace();
}
int currentDaycmp= cal1.get(Calendar.DAY_OF_MONTH);
int currentMonthcmp=cal1.get(calendar.MONTH);
int currentYearcmp=cal1.get(calendar.YEAR);
Calendar cal2=Calendar.getInstance();
Date dtend=null;
try{
dtend = sdf.parse(comparedate);
cal2.setTime(dtend);
} catch (ParseException e) {
e.printStackTrace();
}
int currentDayend= cal2.get(Calendar.DAY_OF_MONTH);
int currentMonend=cal2.get(Calendar.MONTH);
int currentyearend=cal2.get(Calendar.YEAR);
现在找到差异
currentDaycmp-currentDayend(你的条件)..然后执行你的阻止..
你试试这个......可以满足你的要求..
答案 2 :(得分:1)
您可能希望使用Joda-Time:
final DateTimeFormatter formatter = DateTimeFormat.forPattern("dd.MM.yyyy");
LocalDate first = LocalDate.parse("28.11.2012", formatter);
// LocalDate first = new LocalDate(2012, 11, 28);
// LocalDate first = LocalDate.now();
LocalDate second = LocalDate.parse("11.12.2011", formatter);
int daysBetween = Days.daysBetween(first, second).getDays();
如果第二个日期在第一个日期之前,你应该知道daysBetween
是一个负值,就像在这个例子中一样。
对于给定的示例,daysBetween
为-353
。
答案 3 :(得分:0)
您可以使用compareTo方法。 首先,确保您使用的两个日期具有相同的格式。也就是说,如果一个是YYYY,DD,MM那么另一个是相同的。
SimpleDateFormat sdf = new SimpleDateFormat("YYYY-MM-dd");
Date firstDate = sdf.parse("2012-11-27");
System.out.println(sdf.format(firstDate));
然后你会做一个firsDate.compareTo(SecondDate);
if firstDate.compareTo(SecondDate) < 280 {
...
}
答案 4 :(得分:0)
Calendar todayCalendar = new GregorianCalendar();
Calendar pickedDateCalendar = new GregorianCalendar();
todayCalendar.set(currentYear,currentMonth,currentDay);
pickedDateCalendar.set(birthDayDatePicker.getYear(),birthDayDatePicker.getMonth(),birthDayDatePicker.getDayOfMonth());
System.out.println("Days= "+daysBetween(todayCalendar.getTime(),pickedDateCalendar.getTime()));
int Days = daysBetween(todayCalendar.getTime(),pickedDateCalendar.getTime());
public int daysBetween(Date d1, Date d2){
return (int)( (d2.getTime() - d1.getTime()) / (1000 * 60 * 60 * 24));
}