我有整数值,如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。”
。
我在这里做错了什么。 ?
答案 0 :(得分:23)
请尝试以下代码:
int val = 16;
TimeSpan result = TimeSpan.FromHours(val);
string fromTimeString = result.ToString("hh':'mm");
实际上,我认为DateTime不是代表您需要的正确类型,因为您只关心一天内的时间。日期也代表日期,你不能截断它(据我所知)。
答案 1 :(得分:4)
最简单的事情就是:
DateTime time = Date.Today + new TimeSpan (0, 0, seconds);
答案 2 :(得分:3)
由于两个可能的原因,它只会失败。
fromTime
持有单个数字整数,从0
到9
,并且由于其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);