如何在C#中将Int转换为时间?

时间:2013-04-25 07:20:28

标签: c# datetime time

我有整数值,如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");

但它正在给出错误

  

“字符串未被识别为有效的DateTime。”

解析时

我在这里做错了什么。 ?

6 个答案:

答案 0 :(得分:23)

请尝试以下代码:

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

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

请参阅TimeSpan.FromHours Method

答案 1 :(得分:4)

最简单的事情就是:

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

答案 2 :(得分:3)

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

  • 首先,您的fromTime持有单个数字整数,从09,并且由于其9不是09,因此格式{{}会失败1}}。
  • 第二个原因可能是整数大于HH或小于23

您可以将格式修改为单个数字0,这对两者都有效。

H

以上内容会解析从DateTime fromTimeDate = DateTime.ParseExact(fromTime.ToString(), "H", CultureInfo.InvariantCulture); //fromTime holds one of the integer value. 0的任何数字。

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

TimeSpan

答案 3 :(得分:3)

“HH”格式需要两位数,09整数只需“9”。

在那里使用fromTime.ToString("00")强制领先0。

请注意,该DateTime的 date 部分将为“today”。

答案 4 :(得分:1)

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

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

“字符串未被识别为有效的DateTime。”当您在下面的行中使用“hh”代替“HH”时,您将收到此错误..............

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

答案 5 :(得分:1)

如果您实际拥有表示小时数的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);