如何在c#中将Int转换为Time

本文关键字:转换 Time Int 中将 | 更新日期: 2023-09-27 18:11:00

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

在解析时。

我在这里做错了什么?

如何在c#中将Int转换为Time

请尝试此代码:

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

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

请参阅TimeSpan.FromHours方法

最简单的方法是:

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

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

  • 首先,您的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);

"HH"格式需要两位数字,作为整数的09仅为"9"。

在那里使用fromTime.ToString("00")强制一个前导0。

请注意,DateTime的日期部分将为"今天"。

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

"fromTime"值可以是个位数,如"6"而不是"06"、"0"或"其他数字大于24">

"字符串未被识别为有效的DateTime。"当您在下面的行中使用"hh"而不是"hh"时,会出现此错误。。。。。。。。。。。。。。

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

如果您实际上有一个表示小时的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);
 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;
}