Java で次のような関数を作成する際に問題があります。
for(i=initial Time ; i<some final time ; i imcrement by 15 sec )
{
System.out.println(i);
}
どんな提案も心から受け入れます。
要件は、15 秒ずつ増加したさまざまな時間値を生成することです。15 秒ごとに実行する必要はありません。
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());
}
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));
}
}
}
時間ベースの表現が必要なようです。おそらく、Joda-Time のLocalTimeクラス、特にplusSeconds( ) メソッドに目を向けるでしょう。さまざまな理由 (貧弱な API、変更可能な状態など) から、標準の Java の時刻/日付ベースのものは使用しません。
同様のものが必要であるが、タイプセーフがあまりない場合は、Thread.currentTimeMillis()
ループごとに 15000 (15 秒) を使用して追加するだけです。
次のようなループ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());
}
次のように実行できます。
for (long stop=System.currentTimeMillis();stop<System.currentTimeMillis()+60;stop=stop+15)
{
//code to execute
}
したがって、このループは 4 回実行されます。
要件が変更されました (要件は、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();
}
}
「要件は、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));
}