如果我只将时间作为字符串,例如09:00 AM,如何将偏移量作为TimeSpan获取

时间:2009-10-10 13:23:39

标签: c# datetime timespan

我有字符串“9:00 AM”。我希望从午夜到C#中的TimeSpan得到偏移?

4 个答案:

答案 0 :(得分:5)

9:00 AM是准时,而TimeSpan结构代表时间间隔,因此您尝试将苹果转换为橙色。

答案 1 :(得分:3)

时间跨度?时间跨度只是一段时间。 “AM”表示这是一个特定的时间,所以这不能是一个时间跨度。或者你想解析“9:00”而没有“AM”,结果是9小时的时间跨度?

@Your comment:

您可以使用为您执行此操作的方法。这是一个简单的示例实现(您需要添加更好的输入验证,使用比Convert.ToInt32()更好的转换方法等等):

public static TimeSpan GetTimeSpanFormString(string strString)
{
    strString = strString.Trim();
    string[] strParts = strString.Split(':', ' ');

    int intHours, intMinutes;

    if (strParts.Length != 3)
        throw new ArgumentException("The string is not a valid timespan");

    intHours = strParts[2].ToUpper() == "PM" ? Convert.ToInt32(strParts[0]) + 12 : Convert.ToInt32(strParts[0]);
    intMinutes = Convert.ToInt32(strParts[1]);

    return new TimeSpan(intHours, intMinutes, 0);
}

答案 2 :(得分:2)

如果您希望午夜偏移,可以使用:

  DateTime dateTime = DateTime.ParseExact( strValue, "h:mm tt" );
  TimeSpan offset = dateTime - DateTime.Today;

答案 3 :(得分:0)

TimeSpan.TryParse(yourString, out yourTimeSpan);