我已将代码简化为:
string when = "03/03/15 12:00 18:00";
string difference = Convert.ToString(Convert.ToDateTime(when.Substring(when.Length - 5, 5)) - Convert.ToDateTime(when.Substring(when.Length - 10, 10))).substring(difference.Length - 5, 5);
但它仍然非常复杂且也不起作用:/
基本上我希望字符串差异等于6,因为18 - 12是6.它需要稍微复杂一点,因为我也想要进化分钟。
我是个白痴吗?这很容易吗?答案 0 :(得分:2)
只需将您的字符串转换为几个有效的DateTime
值,然后减去它们。
Hours
属性将显示整个小时的差异,在本例中为6。
string when = "03/03/15 12:00 18:00";
string[] portions = when.Split(); // 3 items: "03/03/15", "12:00", "18:00"
string yourDateTimeFormat = "MM/dd/yyHH:mm"; // or "dd/MM/yyHH:mm" if the day is first
// create a valid date from 03/03/15 and 12:00
DateTime fromTime = DateTime.ParseExact(
portions[0] + portions[1], yourDateTimeFormat, CultureInfo.CurrentCulture, DateTimeStyles.None);
// create a valid date from 03/03/15 and 18:00
DateTime toTime = DateTime.ParseExact(
portions[0] + portions[2], yourDateTimeFormat, CultureInfo.CurrentCulture, DateTimeStyles.None);
int differenceInHours = (toTime - fromTime).Hours;
根据您对输入的控制程度,您可能需要添加其他逻辑以检查日期是否有效,或者考虑改为使用DateTime.TryParseExact
。