Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我怎样才能得到时间上的差异?_C#_Asp.net_String_Time_Timespan - Fatal编程技术网

C# 我怎样才能得到时间上的差异?

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

我想计算一个支票时间到现在的时间,得到小时数

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

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。