9

我想将日期作为年、月、日而不用小时或分钟或其他任何东西,我不想单独获得年和月和日。因为作为一个完整的日期,我需要它来与另一个日期进行比较

例如今天28.11.2012并将其与11.12.2011 今天减去11.12.2011超过 280 天进行比较我想执行一些代码

4

5 回答 5

14

你可以使用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 strThatDaystrTodaDay都应用了相同的方法,您将获得两者的日历对象。

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);

试试看。希望它会帮助你。

于 2012-11-27T08:01:38.647 回答
3

始终使用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(你的条件)..然后执行你的块..

你试试这个..可能符合你的要求..

于 2012-11-27T07:59:20.493 回答
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.

于 2012-11-27T09:57:01.087 回答
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));
         }
于 2012-11-27T09:04:33.973 回答
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 {
...
}
于 2012-11-27T08:12:00.993 回答