代码之家  ›  专栏  ›  技术社区  ›  Mark Tomlin

带模返回时间分量

  •  2
  • Mark Tomlin  · 技术社区  · 14 年前

    一班20小时42分16秒,共74536秒。 我如何从该轮班人员完成的秒数中获得小时数?

    20 * 60 * 60      =    72000
         42 * 60      =     2520
              16      =       16
                      +    -----
    Total             =    74536
    ____________________________
    Total % 60        =  Seconds (16)
    Total % ?         =  Minutes (42)
    Total % ?         =    Hours (20)
    

    已经尝试了84600;结果是当一个数字的模值较低时,它实际上并不是很有帮助,如果有人只登录几秒钟,我将不得不了解一些东西…

    1 回复  |  直到 8 年前
        1
  •  5
  •   Jonathan Leffler Toon Krijthe    8 年前

    您需要同时使用模数和除法:

    t = seconds_in_shift;
    secs = t % 60;
    t /= 60;
    mins = t % 60;
    t /= 60;
    hour = t;
    

    或:

    secs =  ttime % 60;
    mins = (ttime / 60) % 60;
    hour =  ttime / 3600;
    

    另一个选项使用 div() 标准C的功能( <stdlib.h> ):

    div_t v1 = div(ttime, 60);
    div_t v2 = div(v1.quot, 60);
    

    之后, v1.rem 包含秒数; v2.rem 包含会议记录,以及 v2.quot 包含基于最初的秒数的小时数 ttime .