我有字符串“9:00 AM”。我希望从午夜到C#中的TimeSpan得到偏移?
答案 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);