7

私のアプリでは、サーバーからデータを最後に更新したときに保存しています。したがって、私は使用しました:

long time = Calendar.getInstance().getTimeInMillis();

今、私はデータが03.03と08.08に年に2回更新されることを望みます。前回の更新以降、これら2つの日付ボーダーのいずれかが交差したウィーターを確認するにはどうすればよいですか?

4

4 に答える 4

23

それらをミリ秒単位の時間に変更して比較します。

 Calendar c = Calendar.getInstance();
    c.set(Calendar.MONTH, Calendar.MARCH);
    c.set(Calendar.DAY_OF_MONTH, 3);
 long time2=   c.getTimeInMillis();
 c.set(Calendar.MONTH, Calendar.AUGUST);
 c.set(Calendar.DAY_OF_MONTH, 8);   
 long time3=   c.getTimeInMillis();
 if(time>time2){
     //Logic
     if(time>time3){
         //Logic
     }
 }
于 2012-04-14T17:27:43.100 に答える
7

次の質問のいずれかに対する答えを探している場合、それを理解するのに時間がかかり、そこにいる人々に非常に役立つ可能性がある非常に重要なことがあります。これはあなたのためです。

日付が正しく表示されないのはなぜですか?手動で時刻を設定しても正しく表示されないのはなぜですか?なぜ月と年が私が設定した日よりも1日少ないのですか?

何らかの理由で、Javaは月の値を配列のように並べ替えます。つまり、Javaの場合、1月は0、DECEMBERは11です。12月を12月、年を2012と設定してから、実行しようとすると、同じことが起こります。月と年の「system.out.println」は、私の月を1月、年を2013と表示します。

だからあなたは何をすべきですか?

Calendar cal = new GregorianCalendar();
cal.set(2012, 11, 26); // the date I want to input is 26/12/2012 (for Java, 11 is December!)

さて、その日付を画面に表示するための正しい方法は何ですか?

「yourCalendar.DATE、yourCalendar.MONTH、yourCalendar.YEARのsystem.out.println」を実行しようとすると、正しい日付が表示されません!!!!

日付を表示する場合は、次のことを行う必要があります。

System.out.println (calact.get (calact.DATE)); 
// displays day
System.out.println (calact.get (calact.MONTH)+1); 
//add 1 remember it saves values from 0-11
System.out.println (calact.get (calact.YEAR));  
// displays year

日付を表す文字列を処理している場合、または....範囲間の日付を比較する必要がある場合は、日付「A」が今後10日以内に配置されるかどうかを知る必要があるとしましょう。 ..あなたのためです!!

私の場合、「2012年7月15日」という形式の文字列を使用していたので、その日付が10日以内に行われるかどうかを知る必要があったため、次のことを行う必要がありました。

1その文字列の日付を取得し、それをカレンダーに変換します(ここではStringTokenizerを使用しました)

これはとても簡単です

StringTokenizer tokens=new StringTokenizer(myDateAsString, "/");

nextTokenを実行し、その日を返す前に、整数として解析して返します。減算1を返す前に1か月間覚えておいてください。

最初に他の2つを作成するためのコードを投稿します。

public int getMeD(String fecha){

    int miDia = 0;
    String tmd = "0";

    StringTokenizer tokens=new StringTokenizer(fecha, "/");
    tmd = tokens.nextToken();

    miDia = Integer.parseInt(tmd);

    return miDia;
}

2次に、カレンダーを作成します

    Calendar cal = new GregorianCalendar(); // calendar
    String myDateAsString= "15/07/2012";    // my Date As String
    int MYcald = getMeD(myDateAsString); // returns integer
    int MYcalm = getMeM(myDateAsString); // returns integer
    int MYcaly = getMeY(myDateAsString); // returns integer

            cal.set(MYcaly, MYcalm, MYcald);

3現在の日付を取得します(今日)

    Calendar curr = new GregorianCalendar(); // current cal
    calact.setTimeInMillis(System.currentTimeMillis());

4将来の10日間に入る一時的なカレンダーを作成します

Calendar caltemp = new GregorianCalendar(); // temp cal
caltemp.setTimeInMillis(System.currentTimeMillis());
caltemp.add(calact.DAY_OF_MONTH, 10); // we move into the future

53つのカレンダーすべてを比較する

ここでは基本的に、私が与えられた日付が確実に将来行われるかどうかを尋ねます。(&&)与えられた日付が10日以上経過した将来の日付よりも短い場合は、「イベントは場所を取ります。今後10日以内に確認してください!!」それ以外の場合は、「イベントは今後10日以内に開催されません」と表示されます。

    if((cal.getTimeInMillis() > curr.getTimeInMillis()) &&        (cal.getTimeInMillis()< curr.getTimeInMillis()))
    { System.out.println ("EVENT WILL TAKE PLACE FOR SURE WITHIN THE NEXT 10 DAYS!!");}
    else
    { System.out.println ("EVENT WILL *NOT* TAKE PLACE WITHIN THE NEXT 10 DAYS");}

ALRIGHT GUYS ANDGIRLS私はそれが助けになることを望んでいます。あなたのすべてのための大きな抱擁とあなたのプロジェクトとの幸運!

平和。YOAV。

于 2012-07-07T00:27:44.163 に答える