C# 我怎样才能得到时间上的差异?
我想计算一个支票时间到现在的时间,得到小时数 例如,我有一个字符串“time”C# 我怎样才能得到时间上的差异?,c#,asp.net,string,time,timespan,C#,Asp.net,String,Time,Timespan,我想计算一个支票时间到现在的时间,得到小时数 例如,我有一个字符串“time” string t1 = UserParam[12].ToString(); // "9/26" string t2 = UserParam[13].ToString(); // "14:51\r" 我需要他们在我的项目中,我从许可证服务器获得的时间从一个用户,我想显示的差异到现在。我想在几个小时内展示这个 我想要一个时间-->1小时49分钟我假设t1是月份和日期,t2是小时和分钟 您可以使用DateTime.Par
string t1 = UserParam[12].ToString(); // "9/26"
string t2 = UserParam[13].ToString(); // "14:51\r"
我需要他们在我的项目中,我从许可证服务器获得的时间从一个用户,我想显示的差异到现在。我想在几个小时内展示这个
我想要一个时间-->1小时49分钟我假设
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”
。您可以使用Trim
或TrimEnd
删除它们。例如:
string t2 = UserParam[13].ToString().TrimEnd(new []{ '\r', '\n' }); // 14:51
我假设
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”
。您可以使用Trim
或TrimEnd
删除它们。例如:
string t2 = UserParam[13].ToString().TrimEnd(new []{ '\r', '\n' }); // 14:51
您可以使用计算日期和时间之间的差异:
string date = "9/26 14:51";
DateTime dt = DateTime.ParseExact(date, "M/dd HH:mm", CultureInfo.InvariantCulture);
TimeSpan diff = DateTime.Now.Subtract(dt);
您可以使用计算日期和时间之间的差异:
string date = "9/26 14:51";
DateTime dt = DateTime.ParseExact(date, "M/dd HH:mm", CultureInfo.InvariantCulture);
TimeSpan diff = DateTime.Now.Subtract(dt);
您需要在
DateTime
结构中使用时间。如果字符串中有时间戳信息,则应使用来填充DateTime
。但是,如果时间戳是字符串,那么在style参数(DateTimeStyles
)中指定时区信息将非常重要
然后,您可以通过减去两个DateTime
stucts来生成TimeSpan
,并使用TotalHours
属性
(dt1 - dt2).TotalHours
您需要在
DateTime
结构中使用时间。如果字符串中有时间戳信息,则应使用来填充DateTime
。但是,如果时间戳是字符串,那么在style参数(DateTimeStyles
)中指定时区信息将非常重要
然后,您可以通过减去两个DateTime
stucts来生成TimeSpan
,并使用TotalHours
属性
(dt1 - dt2).TotalHours
为什么
UserParam[12].ToString()返回两个不同的值?此外,UserParam[12]
的实际类型是什么?如果它已经是一个DateTime
,那么您可能应该像这样使用它,而不是调用ToString()
。使用DateTime.TryParse,DateTime.UtcNow,将差异放在TimeSpan中,然后使用TimeSpan.totalhours。您不清楚要做什么。请提供更多信息。请参阅我的意思是UserParam[12]和UserParam[13]^^^^为什么UserParam[12]。ToString()
返回两个不同的值?此外,UserParam[12]
的实际类型是什么?如果它已经是一个DateTime
,那么您可能应该像这样使用它,而不是调用ToString()
。使用DateTime.TryParse,DateTime.UtcNow,将差异放在TimeSpan中,然后使用TimeSpan.totalhours。您不清楚要做什么。请提供更多信息。请参考我的意思是UserParam[12]和UserParam[13]^^你的意思是?你的意思是?@Tarasov:编辑了我的答案。因为你警告小时和分钟使用TimeSpan.hour和TimeSpan.Minute而不是TotalHours。@Tarasov:编辑了我的答案。因为你警告小时和分钟使用TimeSpan.hour和TimeSpan.Minute而不是TotalHours。