在几秒钟内将数字拆分为天,小时,分钟和秒?

Naf*_*Kay 10 theory math logic modulus

我听说使用%大多数编程语言中的模数运算符可以实现这一点.真正的问题是,怎么样?我不熟悉模数是如何工作的,所以我在过去使用它时遇到了困难.鉴于目前的时间是自1970年以来的几秒钟,1307758473.484我怎样才能计算出使用模数的天数,即几小时,即几分钟?

我基本上打算像这样格式化:"5年,10天,12小时,7分钟和18.56秒".我该怎么做?我真的很有兴趣学习这背后的逻辑,对简单的插入式解决方案感兴趣.

saw*_*awa 26

当你进行整数除法时,你得到商和余数.例如,

5 divided by 3 is quotient 1 with remainder 2.
Run Code Online (Sandbox Code Playgroud)

在编程语言中,这通常表示为:

5 / 3   # => 1
5 % 3   # => 2
Run Code Online (Sandbox Code Playgroud)

你想要的转换只是对此的重复.从较低的单位开始并向更高的位置开始更容易.

首先,你有

  • 1307758473.484 seconds

因为60秒是1分钟,并且

1307758473.484 / 60 = 21795974  (intended to be integer division)
1307758473.484 % 60 = 33.484,
Run Code Online (Sandbox Code Playgroud)

它是一样的

  • 21795974 minutes 33.484 seconds

因为60分钟是1小时,而且

21795974 / 60 = 363266
21795974 % 60 = 14
Run Code Online (Sandbox Code Playgroud)

它进一步相同

  • 363266 hours 14 minutes 33.484 seconds

现在,有一点困难.大多数日子是24小时.当有闰秒时,它不是.如果你忽略闰秒并假设1天是24小时,那么,通过计算,

363266 / 24 = 15136
363266 % 24 = 2
Run Code Online (Sandbox Code Playgroud)

它进一步相同

  • 15136 days 2 hours 14 minutes 33.484 seconds.

同样,大多数年份是365天.当有闰日(年)时,它不是.如果忽略闰日并假设1年是365天,那么通过计算,

15136 / 365 = 41
15136 % 365 = 171
Run Code Online (Sandbox Code Playgroud)

它进一步相同

  • 41 years 171 days 2 hours 14 minutes 33.483 seconds