9

日付を年、月、日、時間や分などを含めずに取得したいのですが、年だけを取得したり、月と日を単独で取得したりすることはしたくありません。完全な日付として、別の日付と比較するために必要だからです

今日のように 、今日から280日を引い28.11.2012たものと比較するためにコードを実行したい11.12.201111.12.2011

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

編集済み: まず、文字列形式の日付があります。日付形式に変換する必要があります。それを行うには、以下のコードを試してください。文字列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);

その後、以下のコードを試して、2つの日付から日を取得します。

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つは現在の日付、もう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この例のように、2番目の日付が最初の日付より前の場合は、これが負の値であることに注意してください。

与えられた例daysBetween-353です。

于 2012-11-27T09:57:01.087 に答える
0

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 {
...
}
于 2012-11-27T08:12:00.993 に答える
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 に答える