Android:日期(年,月,日)

时间:2012-11-27 07:53:44

标签: android date calendar gettime

我希望将日期作为年,月,日而不需要几小时或几分钟或其他任何其他事情,而且我不想让一年,一个月和一个月每一天都由自己。因为作为一个完整的日期,我需要它与另一个日期进行比较

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

5 个答案:

答案 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));
         }