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

问题描述 投票:0回答:8

我有整数值,例如 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
8个回答
34
投票

请尝试此代码:

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

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

参见 TimeSpan.FromHours 方法


5
投票

最简单的事情是这样的:

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

3
投票

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

  • 首先,您的
    fromTime
    保存的是从
    0
    9
    的单位数字整数,并且由于它的
    9
    不是
    09
    ,因此格式会失败
    HH
  • 第二个原因可能是整数是否大于
    23
    或小于
    0

您可以将格式修改为单位数字

H
,这对两者都适用。

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

上面将解析从

0
23
的任何数字。

顺便说一句,它看起来更像

TimeSpan
然后是
DateTime
,您可以使用
TimeSpan.FromHours
方法将其转换为 TimeSpan

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

3
投票

“HH”格式需要两位数,而

09
作为整数只是“9”。

使用

fromTime.ToString("00")
强制前导 0。

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


1
投票

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

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

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

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

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);

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;
}

0
投票

您尝试转换什么类型的整数?例如,如果您的整数代表纪元时间戳,如下例所示

{
    "token_type": "Bearer",
    "expires_on": "1711578241"
}

您可以使用 .NET Core 2.1 或更高版本将其转换为日期时间,如下所示:

var expires_on = "1711578241"; // epoch timestamp returned by JWT token
var expirationDateTime = DateTime.UnixEpoch.AddSeconds(expires_on);

这将返回“3/27/2024 10:24:01 PM”。

© www.soinside.com 2019 - 2024. All rights reserved.