【问题标题】:Dynamic C, How to add 2 "hours" as 4 digit Integer动态 C,如何将 2 个“小时”添加为 4 位整数
【发布时间】:2013-05-22 06:35:56
【问题描述】:

我需要知道如何将 2 个“小时”添加为整数? 24小时制

int add2Hours(int _time1,int _time2)
{ 
} 

样本:13:45 是:(hhmm) 1345

1345 + 30 返回 1415

【问题讨论】:

  • 最好将您的时间表示更改为秒。然后你可以使用+。为什么要使用这种奇怪的表示?

标签: c dynamic time integer add


【解决方案1】:

您的时间采用hhmm 格式,将hhmm 部分分开。然后分别添加部件。

int add2hours(int _time1, int _time2)
{
    int hh1, hh2, mm1, mm2;
    int rHH,rMM, res;
    hh1 = _time1/100;
    hh2 = _time2/100;
    mm1 = _time1 % 100;
    mm2 = _time2 % 100;
    rMM = mm1 + mm2;
    rHH = rMM/60;
    rMM = rMM % 60;
    rHH = rHH + hh1 + hh2;
    res = rHH*100 + rMM;
    return res;
}

注意: 这不会处理超过 24 小时的任何时间。例如如果输入为 2345 和 30,则输出将为 2415 而不是 15(0015)。如果需要,您必须处理它。

【讨论】:

    【解决方案2】:

    如果添加时间的函数声明如下,

    int add2Hours(int _time1,int _time2);
    

    而消磨时间的语法如下,

    hhmm (For example 2230)
    

    然后你可以添加时间如下,

    temp1= _time1;
    temp2= _time2;
    
    m1 = temp1 % 100;
    m2 = temp2 % 100;
    
    h1 = temp1 / 100;
    h2 = temp2 / 100;
    
    m3 = m1 + m2;
    
    m3 > 59 ? m3=m3%60, h3=1 : h3=0;
    
    h3 = h1 + h2 + h3;
    
    h3 > 23 ? h3=h3%24, d=1 : d=0; /* If more than 23 hours */
    
    printf("\nThe time is %d-%d-%d",d,h3,m3);   
    

    【讨论】:

    • +1 用于检测 24 小时溢出。但是缺少创建函数结果的最后一步...
    【解决方案3】:

    首先将时间转换为公共域(秒/毫秒...)。然后将结果添加到所需的格式。

    【讨论】:

      【解决方案4】:

      这个怎么样?

      int add2Hours(int _time1,int _time2)
      {
          int minutes = (_time1%100 + _time2%100)
          int time = (((minutes/60)+(_time1/100 + _time2/100))%24)*100 + minutes%60;
          return time;
      }
      

      【讨论】:

      • 谢谢....我用了 int hour = _time1 / 100 + _time2 / 100; int min = _time1 % 100 + _time2 % 100;小时 += 分钟 / 60;最小值 = 最小值 % 60;小时 = 小时 % 24;返回小时 * 100 + 分钟;*/
      【解决方案5】:
      • 将小时数相加。 13 + 0。
      • 用时间/100*100 减去时间,得到每个时间的分钟数。请注意,C 中的整数算术会截断。示例:

      m = 时间 - (time/100*100)

      m = 1345 - (1345/100*100)

      m = 1345 - (13*100)

      m = 1345 - 1300

      m = 45

      • 将分钟加在一起。 45 + 30 = 75。
      • 将“分钟总和/60”小时添加到结果中。 IE。 75/60 = 1。
      • 然后将“分钟总和模 60”分钟添加到相同的结果中。 IE。 75%60 = 15。

      【讨论】:

      • "... 将每个时间的分钟数除以 100 ...": Err ...?
      • @alk 这很令人困惑,不是吗?由于这太琐碎了,不幸的是,我不假思索地遗漏了所有细节。用公式和示例更新答案。
      【解决方案6】:

      谢谢大家...这是我的功能!

      int Add2Times (int _time1, int _time2)
      {
          int hour = _time1 / 100 + _time2 / 100;
          int min = _time1 % 100 + _time2 % 100;
      
          hour += min / 60;
          min = min % 60;
      
      
          hour = hour % 24;
      
          return hour * 100 + min;
      }
      

      【讨论】:

        猜你喜欢
        • 2019-01-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-28
        • 2018-01-31
        • 2017-07-20
        • 2013-06-29
        • 2016-03-10
        相关资源
        最近更新 更多