我有字符串“9:00 AM”。我想将午夜的偏移量作为 C# 中的 TimeSpan 吗?
问问题
1110 次
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 回答