日付を年、月、日、時間や分などを含めずに取得したいのですが、年だけを取得したり、月と日を単独で取得したりすることはしたくありません。完全な日付として、別の日付と比較するために必要だからです
今日のように
、今日から280日を引い28.11.2012
たものと比較するためにコードを実行したい11.12.2011
11.12.2011
を使用できます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());
編集済み: まず、文字列形式の日付があります。日付形式に変換する必要があります。それを行うには、以下のコードを試してください。文字列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);
その後、以下のコードを試して、2つの日付から日を取得します。
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つは現在の日付、もう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
この例のように、2番目の日付が最初の日付より前の場合は、これが負の値であることに注意してください。
与えられた例daysBetween
は-353
です。
compareToメソッドを使用できます。まず、使用している2つの日付の形式が同じであることを確認してください。つまり、一方が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 {
...
}
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));
}