我想将日期作为年、月、日而不用小时或分钟或其他任何东西,我不想单独获得年和月和日。因为作为一个完整的日期,我需要它来与另一个日期进行比较
例如今天28.11.2012
并将其与11.12.2011
今天减去11.12.2011
超过 280 天进行比较我想执行一些代码
你可以使用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 strThatDay和strTodaDay都应用了相同的方法,您将获得两者的日历对象。
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);
之后尝试下面的代码从两个 Date 获取 Day :
long diff = today.getTimeInMillis() - thatDay.getTimeInMillis(); //result in millis
long days = diff / (24 * 60 * 60 * 1000);
试试看。希望它会帮助你。
始终使用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(currentDateandTime);
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(你的条件)..然后执行你的块..
你试试这个..可能符合你的要求..
您可能需要为此使用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
.
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));
}
您可以使用 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 {
...
}