如何从c#中减去另一个时间?

时间:2015-03-09 00:23:19

标签: c# time

我已将代码简化为:

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.它需要稍微复杂一点,因为我也想要进化分钟。

我是个白痴吗?这很容易吗?

1 个答案:

答案 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