10

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

但它给出了错误

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

解析时。

我在这里做错了什么。?

4

7 回答 7

31

请尝试以下代码:

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

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

请参阅TimeSpan.FromHours 方法

于 2013-04-25T07:25:22.127 回答
5

最简单的事情是:

DateTime time = Date.Today + new TimeSpan (0, 0, seconds);
于 2013-04-25T07:27:55.577 回答
3

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

  • 首先,您fromTime持有一位数整数,从0to 9,并且因为它9不是09,所以它会因 format 失败HH
  • 第二个原因可能是整数大于23或小于0

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

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

以上将解析从0到的任何数字23

顺便说一下TimeSpanDateTime您可以将其转换为TimeSpan使用TimeSpan.FromHours方法。

int fromTime = 23;
TimeSpan ts = TimeSpan.FromHours(fromTime);
于 2013-04-25T07:27:30.937 回答
3

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

使用 afromTime.ToString("00")强制前导 0。

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

于 2013-04-25T07:28:11.817 回答
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);
于 2013-04-25T07:41:00.303 回答
1

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

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

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

DateTime fromTimeDate = DateTime.ParseExact(fromTime.ToString(), "HH", 
CultureInfo.InvariantCulture);
于 2013-04-25T07:27:34.457 回答
1
 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;
}
于 2015-09-09T05:26:24.047 回答