我怎么能在时间上得到差异?

时间:2013-09-26 13:24:18

标签: c# asp.net string time timespan

我想计算现在的检查时间并获得时间。

我有一个字符串“time”,例如......

string t1 = UserParam[12].ToString(); // "9/26"
string t2 = UserParam[13].ToString(); // "14:51\r"

我在我的项目中需要它们,我从许可证服务器获取用户的时间,我想要显示现在的差异。我希望在几小时内显示出来。

我想要时间如何---> 1小时,49分钟

3 个答案:

答案 0 :(得分:3)

我认为t1是月份和日期,t2是小时和分钟。

您可以使用DateTime.ParseExact

string t1 = "9/26";
string t2 = "14:51";
DateTime dt = DateTime.ParseExact(string.Format("{0} {1}", t1, t2), "M/dd HH:mm", CultureInfo.InvariantCulture);
TimeSpan diff = DateTime.Now - dt;
double totalHours = diff.TotalHours;  // 0.726172292194444

修改

  

我收到错误 - >格式不正确

也许是因为你在"14:51\r"中的字符串末尾有不需要的字符。您可以使用TrimTrimEnd删除它们。例如:

string t2 = UserParam[13].ToString().TrimEnd(new []{ '\r', '\n' }); // 14:51

答案 1 :(得分:0)

您可以使用DateTime.Subtract来计算日期和时间之间的差异:

string date = "9/26 14:51";
DateTime dt = DateTime.ParseExact(date, "M/dd HH:mm", CultureInfo.InvariantCulture);
TimeSpan diff = DateTime.Now.Subtract(dt);

答案 2 :(得分:0)

你希望你的时间在DateTime结构中。如果您在字符串中包含时间戳信息,则应使用DateTime.TryParse填充DateTime。但是如果你在字符串中有时间戳,那么在样式参数DateTimeStyles)中指定时区信息就很重要。

然后,您可以通过减去两个TimeSpan结构来制作DateTime并使用TotalHours属性

(dt1 - dt2).TotalHours