【问题标题】:How to combine integers in c# [closed]如何在c#中组合整数[关闭]
【发布时间】:2015-06-09 07:55:38
【问题描述】:

我正在寻找一种将我的整数组合在一起的方法。 我有 3 个整数,我想用它们做一个。

所有整数都持有时间货币,看起来有点像这样:

var date = DateTime.Now;
int timeHours = date.Hour;

我得到了小时、分钟和秒,并希望将它们组合起来,使它们看起来像这样:

Hour : Minutes : Seconds

如何将整数组合在一起来做到这一点。

注意:我在互联网上查看过,但无法获得所需的信息。

这是我看到的:

Combine two integers to create a unique number

How to combine 2 integers in order to get 1?

【问题讨论】:

  • 为什么要将它们组合成一个整数,而不是用一个类型来表示“一天中的时间”或类似的东西? “他们看起来像这样”是什么意思?整数“看起来”不像由冒号分隔的三个值...
  • 作为什么 - 一个字符串?还是其他类型?
  • 没有人知道 OP 想要什么,但都回答了。
  • 这是我的猜测,他只是想要这个:DateTime.Now.ToString("HH:mm:ss")
  • @TimSchmelter 用作H:m:s 格式不是更好吗?听起来像(不确定!)OP想要获得单个数字没有前导零?喜欢5 而不是05 或其他东西:)

标签: c#


【解决方案1】:

组合这些整数将生成一个string,而不是另一个整数。您可以使用ToString() 方法轻松格式化您的DateTime

var str = DateTime.Now.ToString("H':'m':'s"); // eg: 11:0:2

如果你想得到你的小时、分钟和秒部分,你可以使用HH:mm:ss格式代替。

var str = DateTime.Now.ToString("HH':'mm':'ss"); // eg: 11:00:02

【讨论】:

  • 我相信您在这里不需要引号 - 只需 H:m:s 即可完成工作
  • @SergeyBerezovskiy 这取决于 OP 的 CurrentCulture 是什么。 : 字符(即TimeSeparator)具有特殊含义,因为用当前文化或提供的文化时间分隔符替换我。这意味着如果 OP 的当前文化具有与 : 不同的时间分隔符,则输出字符串将采用不同的格式。我知道只有 5 个框架文化有 . 作为时间分隔符,仍然有机会。
  • 你的全球化能力很强:)
  • @SergeyBerezovskiy 相信我,我希望我做不到 :)
【解决方案2】:

DateTime.Now 已经包含您需要的所有信息,日期时间。您只需format this information

【讨论】:

    【解决方案3】:

    有很多方法可以将两个(或多个)整数打包成一个基数 在他们的范围内,例如

      int i1 = 123;
      int i2 = 456;
      // two 32-bit integers into 64-bit one
      long result = (((long) i1) << 32) | i2; 
    

    在你的特殊情况下

      int hours = 5;
      int minutes = 10;
      int seconds = 59;
    
      int combined = hours * 3600 + minutes * 60 + seconds;
    

    反向:

      int combined = 12345;
    
      int seconds = combined % 60;
      int minutes = (combined / 60) % 60;
      int hours = combined / 3600;
    

    【讨论】:

    • @GiorgiNakeuri 公平地说,这个问题不能完全按照所问的来解决——“我得到了 3 个整数我想从中做一个。” - 这解决了这个问题,这也是我认为也是想要的。
    【解决方案4】:

    你可以试试下面我认为有用的代码

           var date = DateTime.Now;
            var result = date.Hour + ":" + date.Minute + ":" + date.Second;
            Console.WriteLine(result);
    

    【讨论】:

    • 我试过了,在这种情况下,它们是作为计算的
    • 所以他们会总结价值
    【解决方案5】:

    使用以 10 为底的数字系统的一种简单方法是

    var number = hours * 10000 + minutes * 100 + seconds
    

    这会在 15:09:36 返回一个类似 150936 的数字

    转换回来:

    seconds = number % 100
    minutes = (number / 100) % 100
    hours = number / 10000
    

    请注意,这显然不是最有效的方法,但很简单

    【讨论】:

      【解决方案6】:

      您应该使用format 函数转换为字符串,例如:

      string result = string.Format("{0:00}:{1:00}:{2:00}", timeHours, timeMinutes, timeSeconds);
      

      只是为了完整:

      格式化HH:mm:ss:

      string result = string.Format("{0:00}:{1:00}:{2:00}", timeHours, timeMinutes, timeSeconds);
      
      string result = DateTime.Now.ToString("HH:mm:ss");
      

      格式化H:m:s:

      string result = string.Format("{0}:{1}:{2}", timeHours, timeMinutes, timeSeconds);
      
      string result = DateTime.Now.ToString("H:m:s");
      

      【讨论】:

        猜你喜欢
        • 2023-04-11
        • 1970-01-01
        • 2014-08-10
        • 2015-03-16
        • 1970-01-01
        • 2016-01-24
        • 1970-01-01
        • 2017-03-03
        • 1970-01-01
        相关资源
        最近更新 更多