0

我有字符串“9:00 AM”。我想将午夜的偏移量作为 C# 中的 TimeSpan 吗?

4

4 回答 4

5

9:00 AM是一个准时时间,而TimeSpan结构表示时间间隔,因此您试图将苹果转换为橙子。

于 2009-10-10T13:29:50.723 回答
3

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

@你的评论:

您可以使用为您执行此操作的方法。这是一个简单的示例实现(您需要添加更好的输入验证,使用比 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);
}
于 2009-10-10T13:31:48.880 回答
2

如果你想要从午夜开始的偏移量,你可以使用:

  DateTime dateTime = DateTime.ParseExact( strValue, "h:mm tt" );
  TimeSpan offset = dateTime - DateTime.Today;
于 2009-10-10T13:36:39.757 回答
0
TimeSpan.TryParse(yourString, out yourTimeSpan);
于 2009-10-10T13:28:10.087 回答