117

文字列形式の日付を現在の日付と比較しようとしています。これは私が行った方法です(テストしていませんが、機能するはずです)が、非推奨の方法を使用しています。代替案の良い提案はありますか? ありがとう。

PS私はJavaでDateのことをするのが本当に嫌いです。同じことを行うには非常に多くの方法があるため、どれが正しいのか本当にわからないため、ここで私の質問です。

String valid_until = "1/1/1990";

Calendar cal = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("dd/mm/yyyy");
Date strDate = sdf.parse(valid_until);

int year = strDate.getYear(); // this is deprecated
int month = strDate.getMonth() // this is deprecated
int day = strDate.getDay(); // this is deprecated       

Calendar validDate = Calendar.getInstance();
validDate.set(year, month, day);

Calendar currentDate = Calendar.getInstance();

if (currentDate.after(validDate)) {
    catalog_outdated = 1;
}
4

16 に答える 16

242

あなたのコードは

SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
Date strDate = sdf.parse(valid_until);
if (new Date().after(strDate)) {
    catalog_outdated = 1;
}

また

SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
Date strDate = sdf.parse(valid_until);
if (System.currentTimeMillis() > strDate.getTime()) {
    catalog_outdated = 1;
}
于 2012-05-27T14:58:46.130 に答える
26

compareTo()を使用できます

CompareTo メソッドは、現在のオブジェクトが他のオブジェクトよりも小さい場合は負の数を返し、現在のオブジェクトが他のオブジェクトよりも大きい場合は正の数を返し、両方のオブジェクトが互いに等しい場合はゼロを返す必要があります。

// Get Current Date Time
Calendar c = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy HH:mm aa");
String getCurrentDateTime = sdf.format(c.getTime());
String getMyTime="05/19/2016 09:45 PM ";
Log.d("getCurrentDateTime",getCurrentDateTime); 
// getCurrentDateTime: 05/23/2016 18:49 PM

if (getCurrentDateTime.compareTo(getMyTime) < 0)
{

}
else
{
 Log.d("Return","getMyTime older than getCurrentDateTime "); 
}
于 2016-05-23T13:28:12.993 に答える
12

Calendarからを直接作成できますDate:

Calendar validDate = new GregorianCalendar();
validDate.setTime(strDate);
if (Calendar.getInstance().after(validDate)) {
    catalog_outdated = 1;
}
于 2012-05-27T14:59:03.650 に答える
11

コードが機能する前の正しい形式は ("dd/MM/yyyy") であることに注意してください。「mm」は分を意味します。

String valid_until = "01/07/2013";
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
Date strDate = null;
try {
    strDate = sdf.parse(valid_until);
} catch (ParseException e) {
    e.printStackTrace();
}
if (new Date().after(strDate)) {
    catalog_outdated = 1;
}
于 2013-05-13T21:35:28.827 に答える
8
Calendar toDayCalendar = Calendar.getInstance();
Date date1 = toDayCalendar.getTime();


Calendar tomorrowCalendar = Calendar.getInstance();
tomorrowCalendar.add(Calendar.DAY_OF_MONTH,1);
Date date2 = tomorrowCalendar.getTime();

// date1 is a present date and date2 is tomorrow date

if ( date1.compareTo(date2) < 0 ) {

  //  0 comes when two date are same,
  //  1 comes when date1 is higher then date2
  // -1 comes when date1 is lower then date2

 }
于 2017-04-06T09:10:48.200 に答える
6

日付をカレンダーに変換し、そこで計算を行います。:)

Calendar cal = Calendar.getInstance();
cal.setTime(date);

int year = cal.get(Calendar.YEAR);
int month = cal.geT(Calendar.MONTH);
int day = cal.get(Calendar.DAY_OF_MONTH); //same as cal.get(Calendar.DATE)

または:

SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
Date strDate = sdf.parse(valid_until);

if (strDate.after(new Date()) {
    catalog_outdated = 1;
}
于 2012-05-27T14:59:23.630 に答える
1

あなたはこれを試すことができます

Calendar today = Calendar.getInstance (); 
today.add(Calendar.DAY_OF_YEAR, 0); 
today.set(Calendar.HOUR_OF_DAY, hrs); 
today.set(Calendar.MINUTE, mins ); 
today.set(Calendar.SECOND, 0); 

today.getTime()値を取得して比較するために使用できます。

于 2012-05-27T15:04:00.490 に答える
0

validDate.setTime(strDate)を使用できますhttp://docs.oracle.com/javase/1.5.0/docs/api/java/util/Calendar.html で javadoc を見て

于 2012-05-27T15:01:28.540 に答える