2014-11-23 79 views
0

我有这样用于时间戳的字符串输入:循环以计算时间戳

23 46 22 

其中“23”表示的一天中的小时,“46”是分钟和“22”是第二个。

我有一个微不足道的问题。我需要把所有从这个例子中,直到一天结束的时候,从23 46 22即时间戳来23 59 59

的循环,我使用来获取所有的时间戳(一次一个)是:

for (int i = hour; i < 24; i++) { 
    for (int j = minute; j < 60; j++) { 
     for (int k = second; k < 60; k++) { 

     } 
    } 
} 

但是这个循环有问题。第二个计数器将始终仅从目前的第二,例如:启动

23 46 22 
23 46 23..... 
.. 
23 47 22 
23 47 23... 

我想时间戳以正确的方式,例如:

23 46 22 
23 46 23..... 
.. 
23 47 01 
23 47 02... 

什么是优雅的方式来做到这一点?

回答

2

您可以在每个循环结束重置秒和分钟:

int m = minute; 
int s = second; 

for (int i = hour; i < 24; i++) { 
    for (int j = m; j < 60; j++) { 
     for (int k = s; k < 60; k++) { 
      .... 
     } 
     s = 0; 
    } 
    m = 0; 
} 
+0

我觉得现在哑。这是对的。 – Anurag 2014-11-23 12:49:03

+1

不要忘记,除非格式化输出,否则单个数字的数字不会显示前导零。如果这是显示给控制台,你可以在内部循环中添加这行'System.out.printf('%02d%02d%02d%n,小时,m,s);'。如果要保存到文件中,可以使用String.format(“%02d%02d%02d%n,小时,m,s)'。 – hfontanez 2014-11-23 12:57:40