1

Java で次のような関数を作成する際に問題があります。

for(i=initial Time ; i<some final time ; i imcrement by 15 sec )
{
    System.out.println(i);
}

どんな提案も心から受け入れます。


要件は、15 秒ずつ増加したさまざまな時間値を生成することです。15 秒ごとに実行する必要はありません。

4

7 に答える 7

4

15 秒ずつ増加する異なる時間値が必要な場合は、次のようにします。

long now = System.currentTimeMillis();
long end = now + (60 * 1000);
Calendar c = Calendar.getInstance();

for (long i = now; i < end; i += 15000) {

    c.setTimeInMillis(i);
    System.out.println(c.getTime());
}
于 2012-12-04T11:30:50.810 に答える
3

Java で currentTimeMillis と長い時間形式を使用することをお勧めします。

例:

import java.util.Date;

public class TestTime {

    public static void main(String[] args) {
        long initialTime = System.currentTimeMillis();
        long finalTime = initialTime + 30*1000*60;//half an hour later

        for(long i=initialTime ; i<finalTime ; i+=15*1000)
        {
            System.out.println(new Date(i));
        }
    }
}
于 2012-12-04T11:28:24.490 に答える
2

時間ベースの表現が必要なようです。おそらく、Joda-Time のLocalTimeクラス、特にplusSeconds( ) メソッドに目を向けるでしょう。さまざまな理由 (貧弱な API、変更可能な状態など) から、標準の Java の時刻/日付ベースのものは使用しません。

同様のものが必要であるが、タイプセーフがあまりない場合は、Thread.currentTimeMillis()ループごとに 15000 (15 秒) を使用して追加するだけです。

于 2012-12-04T11:24:10.693 に答える
1

次のようなループCalander apiで使用できると思います-while

Calendar cal = Calendar.getInstance();
Calendar cal1 = Calendar.getInstance();
cal.setTime(startDate);
cal1.setTime(endDate);
while (!cal.equals(cal1)) {
  cal.add(Calendar.DATE, 1);
  if(cal.get(Calendar.DAY_OF_WEEK)==Calendar.SATURDAY)
     System.out.println(cal.get(Calendar.DAY_OF_WEEK));
  System.out.println(cal.getTime());

}
于 2012-12-04T11:26:18.617 に答える
0

次のように実行できます。

for (long stop=System.currentTimeMillis();stop<System.currentTimeMillis()+60;stop=stop+15) 
{
//code to execute
}

したがって、このループは 4 回実行されます。

于 2012-12-04T11:40:10.390 に答える
0

要件が変更されました (要件は、15 秒ずつ増加したさまざまな時間値を生成することです。15 秒ごとに実行する必要があるわけではありません)。したがって、これは正解ではありません。

int start=0;
int end= 10;
for(int i=start ; i<end ; i++)
{
   System.out,println(i*15);
   try {

       Thread.sleep(15000); // 15000 miliseconds

   } catch (InterruptedException e) {
   e.printStackTrace();     
   }
}
于 2012-12-04T11:24:37.527 に答える
-1

「要件は、15秒ごとに実行する必要があるのではなく、15秒ずつ増加するさまざまな時間値を生成することです」...つまり、ここに...

    long start = System.currentTimeMillis();       // now
    long stop = start + 60000;                     // 60 seconds later
    long interval = 15000;                         // 15 second interval
    for (long i = start; i < stop; i+=interval) {
            System.out.println(new Date(i));
    }
于 2012-12-04T12:03:51.197 に答える