使用模数运算符显示当前时间

时间:2016-08-15 15:08:49

标签: java

免责声明:初学者问题。

在Java练习中,我们被要求使用System.currentTimeMillis()获取当前时间(以毫秒为单位),然后通过除以1000获得秒数,然后使用模数运算符显示秒数,即数字%60。然后我们被要求显示分钟/ 60,然后再显示%60。

有人可以用Layman的术语解释为什么在这个简单的程序中使用%以及该程序如何工作?我知道SO上已经有关于模数运算的问题。有效,但这是一个更实际的案例,似乎没有在这里讨论。谢谢!

 public class Test {  

    public static void main(String[] args) {

long totalMilliseconds = System.currentTimeMillis();
long totalSeconds = totalMilliseconds / 1000;
long currentSecond = totalSeconds % 60;
long totalMinutes = totalSeconds / 60;
long currentMinute = totalMinutes % 60;
long totalHours = totalMinutes / 60;
long currentHour = totalHours % 24;

System.out.println("Current time is " + currentHour + ":" + currentMinute + ":" + currentSecond);



     }
}

2 个答案:

答案 0 :(得分:0)

模数运算符计算整数除法的余数。

让我们举一个例子。假设经过了127秒。这需要2分7秒,对吗?你是如何计算的?

  1. 您将127除以60得到分钟。结果是2分钟。
  2. 您计算该分区的剩余部分以获得......剩余的秒数。这就是模数运算符的作用。结果是7秒。
  3. 算法的其余部分在数小时内应用相同的原理。也许您可以通过将所有中间结果打印到控制台来更好地理解事物。但实际上,它只是算术。

答案 1 :(得分:0)

给定a>=0b>0
a % bab之后的剩余部分。

这意味着如果a >= n*b代表自然数n

a % b == (a - n*b) % b

让我们说你有359秒(= 5分59秒),想要找出分钟中的秒数。

此处使用

b = 60,因此结果与从a = 359中减去完整分钟的最大数量相同,可以减去而不会使结果为负数。< / p>

在这种情况下,我们有

359 % 60 == (359 - 5 * 60) % 60
         == 59 % 60
         == 59

小时/分钟和天/小时类似。