【问题标题】:How to Convert Int into Time in c#?如何在c#中将Int转换为时间?
【发布时间】:2013-04-25 07:20:27
【问题描述】:

我有整数值,例如 06,07,08,.....,16,17,18,...

我想将此整数值转换为 24 小时时间格式。

我正在做这样的事情

//fromTime holds one of the integer value.
DateTime fromTimeDate = DateTime.ParseExact(fromTime.ToString(), 
                                              "HH", 
                                              CultureInfo.InvariantCulture);  

string fromtimestring = fromTimeDate.ToString("hh:mm tt");

但它给出了错误

“字符串未被识别为有效的日期时间。”

在解析时。

我在这里做错了什么。 ?

【问题讨论】:

  • 您在哪一行出现错误?
  • 第一行出现错误。
  • 您的代码有效,因此您传入的整数一定有问题。我敢打赌您传入的整数为零,这不起作用并给出了您所看到的错误!

标签: c# datetime time


【解决方案1】:

请试试这个代码:

int val = 16;
TimeSpan result = TimeSpan.FromHours(val);
string fromTimeString = result.ToString("hh':'mm");

实际上,我认为 DateTime 不是代表您需求的正确类型,因为您只关心一天内的时间。日期也代表日期,你不能截断它(据我所知)。

TimeSpan.FromHours Method

【讨论】:

  • 我在 MYSql db 中有 Time 字段。这能用吗?
  • 我不知道,但看起来时间类型比 Datetime 更接近 .Net 中的 Timespan 类型。
【解决方案2】:

最简单的做法是:

DateTime time = Date.Today + new TimeSpan (0, 0, seconds);

【讨论】:

    【解决方案3】:

    它只能由于两个可能的原因而失败。

    • 首先,您的fromTime 包含从09 的个位数整数,并且由于它的9 不是09,它会以HH 格式失败。
    • 第二个原因可能是整数大于23 或小于0

    您可以将格式修改为单个数字H,这对两者都适用。

    DateTime fromTimeDate = DateTime.ParseExact(fromTime.ToString(), "H", CultureInfo.InvariantCulture);   //fromTime holds one of the integer value.
    

    上面将解析从023 的任何数字。

    顺便说一下,它看起来更像TimeSpan 然后DateTime,您可以使用TimeSpan.FromHours 方法将其转换为TimeSpan

    int fromTime = 23;
    TimeSpan ts = TimeSpan.FromHours(fromTime);
    

    【讨论】:

      【解决方案4】:

      “HH”格式需要两位数,而09作为整数就是“9”。

      在此处使用fromTime.ToString("00") 强制使用前导0。

      请注意,该日期时间的 日期 部分将是“今天”。

      【讨论】:

        【解决方案5】:

        你写的代码是正确的,请检查一次............

        “fromTime”值可以是单个数字,例如“6”而不是“06”或“0”或“其他超过 24 的数字”

        “字符串未被识别为有效的日期时间。”当您在下面的行中使用“hh”而不是“HH”时,您将收到此错误.......

        DateTime fromTimeDate = DateTime.ParseExact(fromTime.ToString(), "HH", 
        CultureInfo.InvariantCulture);
        

        【讨论】:

          【解决方案6】:

          如果您实际上一个表示小时的 int,则根本不需要进行任何解析:

          int hour = 23;
          var today = DateTime.Today;
          var time = new DateTime(today.Year, today.Month, today.Day, hour, 0, 0);
          

          或者(对上面@gean08 的回答稍作修改):

          var time = DateTime.Today + TimeSpan.FromHours(hour);
          

          【讨论】:

            【解决方案7】:
             public string timeformat(int time) {
                string hr, min;
                min = Convert.ToString(time % 100);
                hr = Convert.ToString(time / 100);
                if (hr.Length == 1) hr = "0" + hr;
                if (min.Length == 1) min = "0" + min;
                return hr + ":" + min;
            }
            

            【讨论】:

            • 你能解释一下你的答案吗? “教人钓鱼”等。
            • 我的?你要我解释吗?
            • 如果您给出一个整数值,例如 1020,它将返回一个字符串值 10:20.........即使您给出 920,它也会起作用......它会返回09:20
            猜你喜欢
            • 2017-10-05
            • 2022-01-18
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2013-04-18
            • 2011-12-21
            • 2014-08-29
            • 1970-01-01
            相关资源
            最近更新 更多